1 Java集合类存放在java.util包中,是一个用来存放对象的容器。
集合只能存放对象,如果存放基本类型会自动转换成引用类型。比如int会转出Integer
集合中存的是对象的引用,对象本身还是在堆内存中。
集合可以存放不同类型,不限数量的数据类型。
2 集合可分为Set List Map三大体系
Set:无序,不可重复。
List:有序,可重复。
Map: key-value具有映射关系的集合。
3 Set集合之HashSet
HashSet按哈希算法来存储集合中的元素,因此具有很好的存储和查找性能。
不能保证元素的存放顺序,不可重复,不是线程安全的,集合元素可以使用null
当向HashSet集合存放一个元素时,HashSet会调用该对象的hashcode()方法得到该对象的hashcode值,根据这个值决定它在HashSet中的存储位置。
如果两个的对象的equals()方法返回true,但hashcode()返回值不相等,hashset会把他们存放在不同的位置,但是仍然可添加成功。存放位置由hashcode决定。
4 TreeSet
TreeSet可以确保元素处于排序状态,是SortedSet接口的实现类。支持自然排序和定制排序,默认使用自然排序。会调用元素的compareTo( )方法比较大小,实现排序。
TreeSet必须放入同样类的对象(默认会进行排序),否则会出现类型转换异常,可以用泛型来限制。
重点:Set的无序是指放入顺序和取出顺序不一致,treeset有序是指给里面的元素进行了排序。两个概念不一样。
5 List与ArrayList
List代表一个元素有序、且可重复的集合,集合中的每个元素都有其对应的顺序索引。
List允许使用重复元素,可以通过索引来访问指定位置的集合元素。默认按添加顺序设置元素的索引。
Collection接口—(继承)—>List接口—(实现)—>ArrayList类
6 Map集合
Map是用来保存具有映射关系的数据,里面保存着两组值,一组key,一组value。key和value都可以是任何类型的数据,key不允许重复。key和value直接存在单向的一对一关系。通过制定的key总能找到唯一的,确定的value。
map接口——>实现类Hashmap
Hashtable:古老的map接口实现类,线程安全,不允许null作为key和value
HashMap: 线程不安全,允许null
TreeMap:和TreeSet一样做了自然排序,也允许定制排序。