`
Luob.
  • 浏览: 1592168 次
  • 来自: 上海
社区版块
存档分类
最新评论

java之14天 LinkedList,HashSet集合 (二)

    博客分类:
  • Java
阅读更多
LinkedList的使用

/**
 * LinkedList:特有方法
 * 
 * addFirst()
 * addLast()
 * 
 * getFist()
 * getLast()
 * 获取元素 但不删除元素 ,如果集合中没有元素,会出现 NoSuchException
 * 
 * removeFirst()
 * removeLast()
 * 也可以获取元素,但是元素会被删除,如果集合中没有元素,会出现,NoSuchException

 * JDK1.6 后出现了 替代方法了
 *   添加 
 *   offerFirst()
 *   offerLast()
 *   
 *   //获取
 *   peekFirst()
 *   peekLast()
 *   获取元素 但不删除元素 ,如果集合中没有元素,会返回 null
 *   
 *   //移除 
 *   pollFirst()
 *   pollLast()
 *   也可以获取元素,但是元素会被删除,如果集合中没有元素 会返回null
 */
public class LinkedListDemo {
	public static void main(String[] args) {

		LinkedList link=new LinkedList();
		link.addFirst("java01");
		link.addLast("java02");
		link.addLast("java03");
		link.addFirst("java04");
		
		sop(link);
		//获取第一个 或者  最后一个  
		sop(link.getFirst());
		sop(link.getLast());
		
		//获取 大小 
		sop("size="+link.size());
		
		//移除第一个  
		sop("remove="+link.removeFirst());
		sop(link);
		
		while(!link.isEmpty()){
			sop(link.removeFirst());
		}
		
	}
	
	public static void sop(Object obj){
		System.out.println(obj);
	}
}



LinkedList的练习

/**
 * 使用LinkedList模拟堆栈 或者队列数据结构
 * 堆栈: 先进后出     (FILO:First in Last out) 如同一个杯子
 * 队列: 先进先出     (FIFO:First in First out)  如果一个水管   
 *
 */

class DuiLie{
	private LinkedList link;
	public DuiLie(){
		this.link=new LinkedList();
	}
	
	public void myAdd(Object obj){
		link.addFirst(obj);
	}
	
	public Object myGet(){
		//return link.removeLast(); //队列 
		return link.removeFirst();  //堆栈  
	}
	
	public boolean isNull(){
		return link.isEmpty();
	}
}

public class LinkedListTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		
		DuiLie dl=new DuiLie();
		dl.myAdd("java01");
		dl.myAdd("java02");
		dl.myAdd("java03");
		dl.myAdd("java04");
		
		while(!dl.isNull())
			System.out.println(dl.myGet());
	}

}


HashSet的使用

/**
 *|--Set: 元素是无序的(存入和取出 的顺序不一定一致),元素不可以重复.
 *    |--HashSet: 底层数据结构是哈希表
 *    		hashSet是如何保证元素唯一性呢?
 *           是通过元素的两个方法, hashCode 和  equals 来完成的 
 *           如果元素的hashCode值相同,才会判断equals 是否为true
 *           如果元素的hashCode值不同,不会调用 equals.
 *           
 *           注意: 对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode和equals方法.
 *           
 *    
 *    |--TreeSet:
 * 
 *
 */
class Student{
	private String name;
    private int age;
    public Student(String name,int age){
        this.name = name;
        this.age = age;
    }
    
    public int hashCode(){
    	System.out.println(this.name);
        return 7*name.hashCode()+13*age;
    }
    
    
	@Override
	public boolean equals(Object obj) {
		// TODO Auto-generated method stub
		if(!(obj instanceof Student))
			return false;
		Student s=(Student)obj;
		System.out.println(this.name+"..equals.."+s.name);
		return this.name.equals(s.name) && this.age==s.age;
	}

	public String getName() {
		return name;
	}

	public int getAge() {
		return age;
	}
	
    
}

public class HashSetDemo {

	public static void sop(Object obj){
		System.out.println(obj);
	}
	
	public static void main(String[] args) {
		
		HashSet hs=new HashSet();
		
		hs.add(new Student("a1",11));
		hs.add(new Student("a2",12));
		hs.add(new Student("a3",13));
		//重复的没有被添加进去, 先算hashCode  使用equals 比较 
		hs.add(new Student("a2",12));  
		
		hs.remove(new Student("a2",13));
		hs.remove(new Student("a4",14));
		
		sop(hs.contains(new Student("a1",11)));
		
		Iterator it=hs.iterator();
		while(it.hasNext()){
			Student s=(Student)it.next();
			sop(s.getName()+"...."+s.getAge());
		}
		
	}
	
	public static void method(){
		 Student stu1 = new Student("aa",17);
	       Student stu2 = new Student("aa",17);
	        
	       System.out.println(stu1.hashCode());
	       System.out.println(stu2.hashCode());
	        
	       System.out.println(stu1 == stu2);
	       
	       HashMap<Student,String> hm=new HashMap<Student,String>();
	       
	       hm.put(stu1, "aa");
	       hm.put(stu2, "bb");

	       Set<Student> ss=hm.keySet();
	       Collection<String> cv=hm.values();	
	       
	       for (Student student : ss) {
	    	   sop(student);
	       }
	       for (String str : cv) {
	    	   sop(str);
	       }
	}

}
0
3
分享到:
评论
1 楼 albertwxh 2013-04-24  
学习了!谢谢分享!

相关推荐

    黑马程序员_Java基础辅导班教程课件[第01期]第14天

    集合框架包括List、Set和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等具体实现类。了解并熟练使用这些集合类,可以有效地管理和操作数据。 总的来说,黑马程序员的Java基础辅导班教程旨在通过第14天的...

    corejava的21天课程

    Day 11至Day 16,课程可能会进入更高级的主题,如集合框架(ArrayList、LinkedList、HashSet、HashMap等)、内部类、接口、抽象类以及设计模式。集合框架是Java编程中频繁使用的数据结构,理解和掌握各种集合类的...

    韩顺平30天学java

    8. **集合框架**:Java集合框架提供了多种数据结构,如ArrayList、LinkedList、HashSet、HashMap等,你需要了解它们的特性和应用场景。 9. **多线程**:理解并发编程的基础,如线程的创建、同步机制(synchronized...

    21天学会Java--教案

    数组是存储相同类型元素的固定大小的序列,而集合框架则是更灵活的数据结构,如ArrayList、LinkedList、HashSet、HashMap等。学习者将学习如何声明、初始化和操作数组,以及如何使用集合框架处理复杂的数据存储需求...

    java基础18天Typora笔记

    集合框架包括List、Set和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。理解它们的特性及应用场景,有助于组织和操作数据。 7. **输入输出流** Java的I/O流体系庞大,涉及文件读写、网络通信等...

    java集合框架

    在黑马程序员_毕向东_Java基础视频教程第14天-11-集合框架(ArrayList练习2).avi中,可能会详细讲解ArrayList的用法,包括如何创建ArrayList实例、向ArrayList中添加元素、删除元素、遍历ArrayList以及如何处理...

    java视频教程_黑马Java零基础辅导班[第二期]15天课件源码

    6. **集合框架**:ArrayList、LinkedList、HashSet、HashMap等集合类的使用及其原理。 7. **IO与NIO**:基础的IO流操作和非阻塞I/O模型的理解与应用。 8. **多线程**:线程的创建、同步机制、线程池的使用等。 9....

    21天学通Java.第7版-中文版-良心积分价

    9. **集合框架**:Java集合框架包括List、Set、Queue和Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。理解它们各自的特点和应用场景,学习泛型、迭代器和并发集合的使用。 10. **多线程**:...

    java学习从入门到精通教程(pdf)

    6. **数组与集合框架**:了解如何使用数组存储和操作数据,并学习Java强大的集合框架,包括List、Set、Map接口和ArrayList、LinkedList、HashSet、HashMap等实现类。 7. **字符串处理**:Java中的String类是经常...

    Java 21天学通java

    7. **集合框架**:Java集合框架包括接口(如List、Set、Map)和实现类(如ArrayList、LinkedList、HashSet、HashMap等),是存储和管理对象的重要工具。 8. **输入/输出流**:Java的I/O流用于处理数据的输入和输出...

    Java35天详细讲义

    8. **字符串与集合**:学习String类的常用方法,以及ArrayList、LinkedList、HashSet、HashMap等集合框架的使用。 9. **输入/输出流**:讲解Java I/O流的基本原理,包括文件操作和网络通信。 10. **泛型**:理解...

    21天学通JAVA(高清版)

    8. **集合框架**:深入学习ArrayList、LinkedList、HashSet、HashMap等集合类的使用,以及泛型和接口的应用。 9. **多线程**:掌握线程的概念,学习如何创建和管理线程,以及同步和互斥机制。 10. **文件和目录...

    Java2 编程21天自学通

    8. **集合框架**:了解ArrayList、LinkedList、HashSet、HashMap等集合类,以及泛型、迭代器和集合的转换。 9. **输入/输出流**:学习文件操作,包括字节流和字符流,以及缓冲流、对象序列化和文件复制。 10. **...

    21天学java源代码

    8. **集合框架**:Java集合框架包括List、Set、Queue和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类,它们提供了数据组织和操作的多种方式。 9. **多线程**:Java内置了对多线程的支持,学习者...

    21天学通java第六版,全本!

    4. **数组与集合**:数组是存储和操作数据的基础,Java集合框架(如ArrayList、LinkedList、HashSet、HashMap等)则提供了更高级的数据组织方式,书中有详细的使用示例和解析。 5. **函数式编程**:随着Java 8的...

    21天自学速成 Java 语言 电子书

    4. **数组与集合**:学习如何使用一维和多维数组,以及ArrayList、LinkedList、HashSet、HashMap等集合框架类。 5. **方法与函数式编程**:掌握方法的定义、调用,以及Java 8引入的函数式接口和Lambda表达式。 6. ...

    Java 2编程21天学自学通

    6. **集合框架**:涵盖ArrayList、LinkedList、HashSet、HashMap等主要集合类的使用,以及泛型、迭代器和集合操作的高级主题。 7. **输入/输出流**:讲解如何进行文件操作,包括读写文件、序列化和反序列化,以及...

    尚硅谷_宋红康_20天Java核心_资料工具

    5. **集合框架**:包括ArrayList、LinkedList、HashSet、HashMap等,它们用于存储和操作一组对象。理解集合框架有助于实现数据的高效管理和操作。 6. **输入输出流**:Java的IO流用于读写文件、网络通信等。分为...

    21天学通JAVA(第三版)

    4. **数组与集合**:包括一维和多维数组的使用,以及ArrayList、LinkedList、HashSet、HashMap等集合框架的运用。 5. **异常处理**:学习如何使用try-catch-finally结构来捕获和处理程序中的异常,提高代码的健壮性...

    21天学会JAVA编程

    9. **集合框架**:深入研究ArrayList、LinkedList、HashSet、HashMap等集合类,掌握它们的用法和区别。 10. **输入/输出流**:学习I/O流的基本概念,包括文件读写、标准输入输出以及对象序列化。 11. **函数式编程...

Global site tag (gtag.js) - Google Analytics