集合框架知识点总结

一、集合概述 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()还可以进行添加,修改。
    
    1. 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 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 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 cmp):

  •     反转比较器中的顺序;
    
  • (7)replaceAll(List 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. 迭代器:集合的取出元素的方式。(类似于电玩城夹娃娃的夹子)
    1. 数据结构:数据的存储方式。
    1. 增强for循环
  • 格式:

  • for(数据类型 变量名:被遍历的集合(Collection)或者数组){}

    1. StaticImport 静态导入
  • 当类名重名时,需要指定具体的包名。

  • 当方法重名时,指定具体所属的对象或者类。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值