list集合set集合的区别:
List:元素是有序的,元素可以重复。因为该集合体系有索引。
List集合体系:ArrayList:底层的数据结构使用的数组结构;优点:查询很快,缺点:增删慢;是线程不同步的
LinkedList:底层的数据结构使用的是链表结构;优点:增删速度快;缺点:查询速度慢
LinkedListJDK1.6新特性:为了解决如果集合中没有要取出和删除的元素报的NoSuchElementException的异常所以出现了这些新特性,这些新提供的方法如果没有元素则会返回null
添加:offerFirst(),offerLast()
取出:peekFirst(),peekLast()
删除:pollFirst(),pollLast()
Vector:底层的数据结构使用的是数组结构,是线程同步的,Vector已经被ArrayList所取代了
Set:元素是无序的,元素不可以重复以便保证唯一性。
Set接口中的方法和Collection的方法一致
Set集合体系:HashSet:底层的数据结构是哈希表,是不同步的
哈希表确定内容是否相同原理:1,判断的是两个元素的哈希值是否相同,如果相同,再判断两个对象的内容是否相同;2,判断哈希值相同其实用的就是用hashCode()方法,判断内容相同,用的是equals方法。3,如果哈希值不同,则不用判断equals方法
LinkedHashSet:和HashSet是相同的用法,区别在于LinkedHashSet是有序的
注意:如果元素要存到HashSet中去,必须覆盖hashcode和equals方法。一般情况下,如果用户自定义的类会产生很大对象,通常都要覆盖equals和hashcode方法。建立判断对象是否相同的依据。
TreeSet:底层使用的二叉树;使用元素的自然排序对元素进行排序,是不同步的;而且只能储存相同类型的对象类型
判断元素唯一性的方式:就是根据比较方法返回结果是否为0,是0就相同,不是就不相同,表示不存在。
排序方式一:
TreeSet对元素的排序方法通常都是实现Comparable接口,覆盖compareTo方法
排序方式二:
如果不要按照元素本身具备的自然排序方式,或者元素本身不具备自然排序怎么解决:这时候可以让集合自身具备比较功能,传入比较器
|