集合框架知识点总结

集合框架知识点总结

    一、集合概述 Collection

 * 1.List:元素是有序的,元素可以重复。因为该集合体系有索引。
 * (1)ArrayList:底层的数据结构使用的是数组结构。
 *     特点:查询速度很快,但是增删特别慢。线程不同步。
 * (2)LinkedList:底层使用的是链表数据结构。
 *     特点:增删速度很快,查询稍慢。
 * (3)Vector:底层是数组数据结构。线程同步。被ArrayList替代了。
 * 
 * 2.Set:元素是无序的(存入和取出的顺序不一致),元素不可以重复。
 *   Set集合的功能和Collection是一致的。
 * (1)HashSet:底层数据结构是哈希表。线程是非同步的。
 *    HashSet是如何保证元素唯一性的呢?
 *    答:是通过元素的两个方法:hashCode和equals来完成。
 * (2)TreeSet:可以对Set集合中的元素进行排序。
 *    底层数据结构是二叉树。
 *    保证元素唯一性的依据:compareTo方法return 0.


 * 二、集合框架-List
 *
 * 1. List: 特有方法:凡是可以操作角标的方法都是该体系特有的方法。
 * (1)增:add(index,element);
 *         addAll(index,Collection);
 * (2)删:remove(index);
 * (3)改:set(index,element);
 * (4)查:get(index);
 *         subList(from,to);
 *         ListIterator();
 *         备注:Iterator()只能对元素进行判断,取出,删除;
 *                   ListIterator()还可以进行添加,修改。
 *
 * 2. LinkedList:特有方法
 * (1)addFirst();
 *     addLast();
 * (2)获取元素,但不删除元素。如果集合中没有元素,会出现NoSuchElementException.    
 *    getFirst();
 *    getLast();
 * (3)获取元素,但是元素被删除。如果集合中没有元素,会出现NoSuchElementException.    
 *    removeFirst();
 *    removeLast();   
 * 在JDK1.6出现了替代方法。
 * (1)offerFirst();
 *    offerLast();
 * (2)获取元素,但不删除元素。如果集合中没有元素,会返回null。    
 *    peekFirst();
 *    peekLast();
 * (3)获取元素,但是元素被删除。如果集合中没有元素,会返回null。   
 *    pollFirst();

 *    pollLast();


 * 三、集合框架-Set
 *
 * TreeSet的两种排序方式
 *(1)第一种:
 *  让元素自身具备比较性。元素需要实现comparable接口,覆盖compareTo方法。
 *  这种方式也称为元素的自然顺序,或者叫做默认顺序。
 *(2)第二种:
 *  当元素自身不具备比较性时,或者具备的比较性不是所需要的,这时就需要让集合自身具备比较性。
 *  在集合初始化时,就有了比较方式。定义一个类,实现Comparator接口,覆盖compare方法。


 * 四、集合框架-Map

 * 1.Map集合:该集合存储键值对,一对一对往里存,而且要保证键的唯一性。
 * (1)添加:
 *     put(K key,V value);
 *     putAll(Map<? extends K,? extends V> m);
 * (2)删除:
 *     clear();
 *     remove(Object key);
 * (3)判断:
 *     containsValue(Object value);
 *     containsKey(Object key);
 *     isEmpty();
 * (4)获取:
 *     value get(Object key);
 *     size();
 *     values();//获取map集合中所有的值
 * 
 * 2.Map集合的两种取出方式
 * (1)Set<k> keySet:
 *    将map中所有的键存入到Set集合,因为Set具备迭代器,所以用迭代方式取出所有的键。
 *    再根据get方法,获取每一个键对应的值。
 *    Map集合的取出原理:将map集合转成set集合,再通过迭代器取出。
 * (2)Set<Map.Entry<k,v>> entrySet:
 *    将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:Map.Entry
 *    其实Entry也是一个接口,它是Map接口中的一个内部接口
       
 * 3.Map分类
 *  (1)Hashtable:底层是哈希表数据结构,不可以存入null键和null值。
 *               该集合是线程同步的。JDK1.0后出现。效率低。
 *  (2)HashMap:  底层是哈希表数据结构,允许使用null键和null值。
 *               该集合是线程不同步的。JDK1.2后出现。效率高。
 *  (3)TreeMap:  底层是二叉树数据结构。线程不同步。
 *               可以用于给map集合中的键进行排序。
 *  和Set很像。其实Set底层就是使用了Map集合。


 * 五、集合框架工具类-Collections和Arrays

 * 1.Collections常用方法
 * (1)sort(list<T> list,Comparator<? super T> c):
 *         根据比较器排序给定集合;
 * (2)max(Collection<? extends T> coll, Comparator<? super T> comp) :
 *         返回给定集合的最大元素;                   
 * (3)binarySearch(List<? extends Comparable<? super T>> list,T key):
 *         根据二分查找获得指定元素的下标                                
 * (4)shuffle(List<?> list):
 *         随机置换list集合中的元素顺序(应用:扑克洗牌)
 * (5)reverse(List<?> list):
 *         反转集合中的元素顺序;
 * (6)reverseOrder(Comparator<T> cmp):
 *         反转比较器中的顺序;
 * (7)replaceAll(List<T> list,T oldVal,T newVal):
 *         替换;                                                                        
 * (8)fill(List<? super T> list,T obj):
 *         将list集合中所有元素替换成指定元素                       

 * 2.Arrays:用于操作数组的工具类。里面都是静态方法。
 * (1)数组变成集合
 *         Arrays.toString(arr);
 *         Arrays.asList(arr);
 * (2)集合变成数组:toArray方法


 * 六、泛型
 * 
 * 1.泛型:JDK1.5版本以后出现新特性。用于解决安全问题,是一个类型安全机制。
 *      
 * 2.好处:
 * (1)将运行时期出现的问题ClassCastException(类型转换异常)转移到了编译时期。
 *         方便于程序员解决问题,让运行时期问题减少,安全。
 * (2)避免了强制转换麻烦。
 *
 * 3.泛型格式:通过<>来定义要操作的引用数据类型。
 *
 * 4.泛型的限定
 * (1)? extends E:可以接收E类型或者E的子类型。上限
 * (2)? super   E:可以接收E类型或者E的父类型。下限


 * 七、其他知识点

 * 1. 迭代器:集合的取出元素的方式。(类似于电玩城夹娃娃的夹子)
 * 
 * 2. 数据结构:数据的存储方式。
 *
 * 3. 增强for循环
 *    格式:
 *    for(数据类型 变量名:被遍历的集合(Collection)或者数组){}
 *
 * 4. StaticImport 静态导入
 *   当类名重名时,需要指定具体的包名。
 *   当方法重名时,指定具体所属的对象或者类。

附录






猜你喜欢

转载自blog.csdn.net/smiling_chang/article/details/80955561