集合框架全部知识:

集合类的由来:
        对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定。
         就使用集合容器进行存储。
集合的特点:
1,用于存储对对象的容器。
2,集合的长度是可变的。
3,集合中不可以存储基本数据类型值。
4,有些方便放入和取出,有些方便查找。
Collection接口:
      add(Object obj);将指定的对象添加到该集合中
      remove(Object obj);将指定的对象移除该集合
      isEmpty(); 返回boolean,用于判断当前集合是否为空,如果集合中不包含元素,则返回true,否则返回false
      iterator();返回在此Collection的元素上进行迭代的迭代器,用于遍历集合中的对象
      size();返回int值,获取该集合的元素个数
      clear();移除该集合的所有对象,清空该集合。
      contains(Object obj);用来查看该集合中是否存在指定的对象,返回值为boolean类型,如果存在则返回true,否则返回false
  removeAll(Collection coll)方法:
                  该方法用来从该集合中移除同时包含在指定参数集合中的对象。如果集合中包含符合条件的对象则返回true,否则返回false
  containsAll(Collection coll):与removeAll(Collection coll)相反
5,获取:
  int size();
  Iterator iterator():取出元素的方式:迭代器
      该对象必须依赖于具体容器,因为每一个容器的数据结构都不同。
      所以该迭代器对象是在容器中进行内部实现的
      对于使用容器者而言,具体的实现不重要,只要通过容器获取到该实现的迭代器的对象即可,
      也就是iterator方法。
  Iterator接口就是对所有的Collectionon容器进行元素取出的公共接口。
 
Collecton
 |--List:有序(存入和取出的顺序一致),元素都有索引,元素就可以重复
 |--Set:元素不能重复,无序。
 List:特有的常见方法,有一个共性特点就是都可以操作角标
 
 List的常用子类
  |--Vector:内部是数组数据结构,是同步的
  |--ArrayList:内部是数组数据结构,不同步,效率高,替代Vector,查询速度快
  |--LinkedList:内部是链式数据结构,不同步的,增删元素速度快

Set:元素不可以重复,无序
   其中的方法和Collection一致
   HashSet:内部数据数据结构是哈希表,是不同步的。
    如何保证该集合的元素唯一性呢?
    是通过对象的hashCode和equals方法来完成对象的唯一性的。
    如果对象的hashCode值不同,那么不用判断equals方法,就直接存储到哈希表中。
    如果对象的hashCode值相同,那么要再次判断对象的equals方法是否为true。
    如果为true,视为相同元素,不存,如果为false,那么视为不同元素,就进行存储。
    记住:如果元素要存储到HashSet集合中,必须覆盖hashCode方法和equals方法。
    一般情况下,如果定义的类会产生很多对象,比如人,学生,书,通常都需要覆盖equals,hashCode方法。
    建立对象判断是否相同的依据。
      
 |--TreeSet:可以对Set集合中的元素进行排序。是不同步的
               判断元素的唯一性的方式:就是根据比较方法的返回结果是否是0,是0,就是相同元素,不存。
        
  TreeSet对元素进行排序的方式一:
           让元素自身剧本比较功能,晕啊素需要实现Comprable接口,覆盖comparaTo方法。
           如果不要按照对象中具备的自然顺序进行排序,或者对象不具备自然顺序,怎么办?
           可以使用TreeSet集合第二种排序方式二:
           让集合自身具备比较功能,定义一个类实现Comparator接口,覆盖compare方法。
           将该类对象作为参数传递给TreeSet集合的构造函数。
           ====================================
Map:一次添加一对元素。 Collection 一次添加一个元素
    Map也称双列集合,Collection集合称为单列集合
            其实map集合中存储的就是键值对
    map集合中必须保证键的唯一性
    常用方法:
    put(k key,v value); 返回前一个和key关联的值,如果没有,返回null;
    clear();清空map集合。
    remove(key);根据指定的key翻出这个键值对。
    containsKey(key);
    containValue(value);
    isEmpty();
    get(key);通过键获取值,如果没有改建返回null;
                                    可以通过返回null,来判断是否包含指定键。
    size();获取键值对的个数。
           
      取出map所有的元素。
      方式一:
           原理:同过keySet方法获取map中所有的键所在的Set集合,在通过Set的迭代器获取到每一个键,
           在通过map集合的get方法获取每一个键对应的值。
           例如:Set<Integer> keySet=map.keySet();
        Iterator it=keySet.iterator();
        while(it.hasNext()){
            Integer key= (Integer) it.next();
            String value=map.get(key);
            System.out.println(key+" "+value);
            }
    方式二:
     通过Map转成set就可以迭代。
     找到了另一个方法,entrySet
     该方法将键和值的映射关系作为对象存储到了Set集合中,而这个映射关系的类型就是Map、Entry类型
        
    Set<Map.Entry<Integer, String>> entrySet=map.entrySet();
    Iterator<Map.Entry<Integer, String>> it2=entrySet.iterator();
    while(it2.hasNext()){
        Map.Entry<Integer, String> me=it2.next();
        Integer key=me.getKey();
        String value=me.getValue();
        System.out.println(key+" "+value);
    }
Map常用的子类:
    |--Hashtable:内部结构是哈希表,是同步的。不允许null作为键,bull作为值。
           |--Properties:用来存储键值对型的配置文件的信息,可以和IO技术相结合。
    |--HashMap:内部结构是哈希表,不是同步的,允许null作为键,null作为值。
    |--TreeMap:内部结构是二叉树,不是同步的,可以对Map集合中的键进行排序。

你可能感兴趣的:(集合框架)