集合

来源:互联网 发布:男士补水 知乎 编辑:程序博客网 时间:2024/06/09 19:51

Collection

接口:     Set           List                     Map

实现类:HashSet  ArrayList  LinkedList      HashMap  Hashtable

 

Set与List:

Set中一个对象只能放一次,不能重复。无序

           List中一个对象可以放多次,可以重复。有序

 

HashSet与TreeSet:

 

 

 

ArrayList与LinkedList:

      ArrayList:数组结构,适合查询,常用方法:add、get、size、isEmpty、toArray

      LinkedList:链路结构,适合插入与删除。

 

(Set、List)与Map:

        (Set、List):数据是一个整体对象。

        Map:key与value,键值对

 

HashMap与Hashtable:

        HashMap:key与value可以是null,没有实现线程同步(StringBulider)。

        Hashtable:key与value不能为空,实现了线程同步(StringBuffer)。

 

泛型:指定容器类所要指定的数据类型。例如:

Collection<String> coll=new ArrayList<String>();指定了ArrayList中只能装Sting数据类型的数据,不能放其他的。

 

Comparator与Comparable:

1、对象不能直接比较大小

2、要对对象比较大小,我们只能比较对象可以比较的属性

3、实现对象比较的两种方式:a:在定义类的时候实现Comparable接口里面的compareTo(object  o)方法。(在方法中实现属性大小的比较)b:直接写一个比较器类,实现Comparator接口中的compare(Object o1 ,Object o2)的方法。(在方法中实现属性大小的比较)。

那么,什么时候用Comparable,什么时候用Comparator?

答:1、在类设计的时候(写类的时候)用Comparable,就是说你设计的时候就要进行比较。

2、在类写好的时候,不能修改里面的比较逻辑,需要临时的使用另外的比较大小方式,单独的写Comparator (比较器),就是说突然要对某个对象的属性进行比较。

迭代器:

HashSet:iterator

HashSet set=new HashSet();  

Iterator itor=set.iterator();       for(Iteratoritor=set.iterator();itor.hasNext();)

While(itor.hasNext()){            {

String str=(String)Itor.next();}            Stringstr=(String)Itor.next();}

 

 

要比较不是默认的对象比较,要用比较器。例如我们不是比较数字、字母或其他的大小,而是比较年龄、名字等,我们可以用比较器进行比较。

 

Map.Entry对象里面封装了key与value,因此你可以用getKey与getValue的方法来获得里面的key与value值。