黑马程序员 总结(一)——集合类的总结

1、List接口

List 关心的是索引,与其他集合相比,List特有的就是和索引相关的一些方法:get(intindex) 、 add(int index,Object o) 、indexOf(Object o) 。以及List集合所特有的List迭代器(列表迭代器:ListIterator是Iterator的子接口),因为普通的迭代器无法对获取到的元素进行操作。而列表迭代器就可以。

ArrayList 可以将它理解成一个可增长的数组,它提供快速迭代和快速随机访问的能力。

LinkedList 中的元素之间是双链接的,当需要快速插入和删除时LinkedList成为List中的不二选择。

Vector 是ArrayList的线程安全版本,性能比ArrayList要低,现在已经很少使用

2、Set接口

Set关心唯一性,它不允许重复。

HashSet :当不希望集合中有重复值,并且不关心元素之间的顺序时可以使用此类。

  • 通过其中的hashCode方法来判断元素是否重复,因此要求装入此集合的元素必须覆盖hashCode方法,建立自己特有的hash值算法,返回自己的int类型的哈希值。
  • 覆写equals方法,建立自己的比较方式。当hashCode方法返回的值是一样的时候,就会调用equals方法,判断是否是同一个元素。如果是则不存,如果不同,则在该hash地址下顺眼。

TreeSet 当不希望集合中有重复值,并且希望按照元素的自然顺序进行排序时可以采用此类。(自然顺序意思是某种和插入顺序无关,而是和元素本身的内容和特质有关的排序方式,譬如“abc”排在“abd”前面。)

  • HashSet 通过两个方法(hashCode和equals)来判断两个元素是否相同,TreeSet通过存入该集合的元素自身实现一个comparable接口,覆盖其中的compareTo方法来判断两个元素是否相同。
  • 还可以通过构造一个比较器(定义一个类实现comparetor,覆盖其中compare方法(Object obj1,Object obj2))传给集合.

3、Queue接口

Queue用于保存将要执行的任务列表。

LinkedList 同样实现了Queue接口,可以实现先进先出的队列。

PriorityQueue 用来创建自然排序的优先级队列。

4、Map接口

Map关心的是唯一的标识符。他将唯一的键映射到某个元素。当然键和值都是对象。

HashMap 当需要键值对表示,又不关心顺序时可采用HashMap。

  • Set<Map.Entry<K,V>> entrySet():是把Map集合中的映射关系抽取出来存进一个Set集合,并将次Set集合返回。Map.Entry是一种类型声明,表示的是映射关系。而尖括号中的中的两个类型声明表示的是:这个映射关系是这两个类型之间的关系。
  • Set<K> keySet():是把Map集合中的键值取出来存进一个Set集合,并把这个Set集合返回。
  • Map集合中判断键值是否相同的原理是先调用该键对象的hashCode方法,如果hash值相同则在调用对象的equals方法就行比较,如果都相同,则判定键值相同。所以,装入Map集合的自定义元素,必须复写hashCode和equals方法。

Hashtable 注意Hashtable中的t是小写的,它是HashMap的线程安全版本,现在已经很少使用。

HashMap 当需要键值对,并且关心插入顺序时可采用它。

TreeMap 当需要键值对,并关心元素的自然排序时可采用它。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值