J2SEI:集合类

什么是集合类?

集合类存放于java.util包中。集合类存放的都是对象的引用,而非对象自己,出于表达上的便利,咱们称集合中的对象就是指集合中对象的引用。java

集合类型主要有:

map(映射):数组

其主要实现类有HashMap、TreeMap;安全

Map对值没有惟一性要求,对健要求惟一,若是加入已有的健,原有的值对象将被覆盖;线程

Hashtable基于线程安全,效率低,古老, HashMap基于非线程安全,效率高。code

Collection:对象

collection是最多见的集合的上级接口。排序

继承自collection的经常使用接口有List,Set,都是单列的集合。继承

set(集):接口

1)Set实现的基础是Map(HashMap);hash

2)主要实现类有HashSet、TreeSet;

​ HashSet(),调用对象的hashCode()方法,得到哈希码,而后再集合中计算存放对象的位置。

​ TreeSet(),继承ShortedSet接口,可以对集合中对象排序。

3)Set中的元素是不能重复的,若是使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象;

 public class SetTest {

    public static void main(String[] args) {
      Set set=new HashSet();
       //添加数据
      set.add("abc");
      set.add("cba");
      set.add("abc");//故意重复
      set.add(123);
      set.add(true);
 
      System.out.println("集合元素个数:"+set.size());
       //遍历出集合中每个元素
      Iterator it=set.iterator();
      while(it.hasNext()){
        System.out.println(it.next());
       }
    }
  }

【经过java的equals()方法判别。若是有特殊需求须重载equals()方法。】

list(列表):

主要实现类:

LinkedList:实现了链表结构,底层双向链表,查询慢,增删快;

ArrayList:可表明大小可变的数组;

底层是数组实现,线程不安全,效率高,查询比较高,增删效率低;

List和Set的特性和区别:

  1)首先list和set都是单列集合;

  2)list里面的元素是有序的可重复的;

  3)set集合里面的元素是无序的不可重复的;

  4)list集合能够根据下标获取对应的元素,而set则只能遍历所有集合才能获取对应的元素;