JAVA 学习之集合

来源:互联网 发布:淘宝考试以下不是催情 编辑:程序博客网 时间:2024/05/22 06:22

java集合:

集合和数组的区别是:
数组的长度固定;必须声明数据类型。
集合的长度可变;可以存放不同数据类型。

集合有哪些:
List、Set、Map是集合体系中的接口。List和Set都继承自Collection接口。

List、Set、Map接口的区别是:
List是一个接口,特点是List有序、可重复。实现类有ArrayList和LinkedList还有Vector。
Set同样也是一个接口,特点是Set无须、唯一。实现类有HashSet和TreeSet还有LinkedHashSet。
Map同样也是一个接口,特点是以键(key)值(value)对形式来存放元素;key唯一、value可重复。实现类有 HashMap和TreeMap还有HashtableMap。

LIST
ArrayList和LinkedList还有Vector的底层实现是:
ArrayList和Vector的底层实现是可变数组,特点是查询快,增删慢。
数组是一块连续的内存空间,通过索引来查询所以快。
LinkedList的底层实现是一个链表,特点是增删快,查询慢。

SET
HashSet和TreeSet还有LinkeHashSet的底层实现是:
HashSet底层实现是哈希表,特点是可以保证唯一。HashSet的add方法其实是调用的是Map的put方法,把元素当作键,值都是Object,存放key的时候先判断哈希值是否存在,如果不存在直接存储,如果存在则继续用equals判断其元素对象是否存在,如果存在不存储,如果不存在则存储。
TreeSet底层是二叉树,特点是可以按照一定规则来排序;保证唯一性,必须要实现Comparable接口,来定义排序规则,实现方法中如果返回0则是重复元素,如果是正数则往右放,如果是负数则往左放。
LineHashSet的底层实现是链接和哈希表。特点是有序,唯一。由链表保证元素有序;由哈希表保证唯一。

MAP
HashMap和TreeMap 还有HashtableMap的底层是:
HashMap的底层实现是哈希表,可以保证元素的唯一性,只针对键。
TreeMap的底层实现是二叉树,可以保证元素的唯一性及按照一定规则进行排序,只针对键。
HashtableMap的底层实现是同HashMap一样是哈希表。

HashMap和HashtableMap的区别是:
HashMap是线程不安全的,所以效率高;键和值允许为NULL。
HashtableMap是线程安全的,所有效率低;键和值不允许为NULL。

集合的线程:
ArrayList、LinkedList、HashSet、TreeSet、LinkedHashSet HashMap、TreeMap是线程不安全的。
Vector和HahstableMap是线程安全的。

Aaarys转集合不能改变长度。

实现Comparable有几种方法:
三种:
匿名内部类、自定义类实现、在存储对象上实现。

Iterator迭代器:
Iterator迭代器遍历集合时不能修改集合元素。想要修改集合元素,用集合本身遍历集合修改集合;也可以用迭代器迭代(ListIterator)用迭代器修改集合元素。添加集合元素时,用迭代器迭代到那里就添加到哪里;用集合本身遍历集合添加元素时是添加到集合的末尾。

equals默认判断的是地址值 。

0 0