集合的概念
集合用于存储对象,分为list和set两种。
1,其中list元素是有序的,并且可以重复,之所以可以重复是因为list是有索引的。
2,但是set元素是无序的,并且不可以重复。
3,list有特有的迭代器:listIterator,listIterator是Iterator的子接口。
4,在使用迭代器的方法操作元素时,不能再用集合对象的方法操作元素,因为这样会抛出异常,所以操作是只可以使用一种方法。
5,迭代器Iterator操作元素时,只能对元素做判断·取出·删除这三种操作,这三种方法满足不了现实的需要,所以可以调用listIterator这个Iterator的子接口,这样就能对对象作出更多的操作。
6,arrayList是底层的数据结构,使用数组结构,特点是查询速度快,但是增删稍慢,线程不同步,ArrayList实现了可变大小的数组。
7,linkedList底层使用的是链表数据结构,特点是增删速度快,但是查询速度稍慢,和arrayList一样,他也是线程不同步的。
8,vector,以前的高层数组数据结构,线程同步。但是现在已经基本被arraylist取代了。
9,堆栈:先进后出。队列,先进先出。
10,hashSet是如何保证元素唯一性的
(1)通过hashCode和equals这两种方法
(2)如果元素的hashCode相同,再去判断元素的equals是否也是true
(3)如果元素的hashCode不同,则不去调用equals方法。
11,treeSet可以对集合中的元素进行排序,底层数据结构是二叉树。保证数据元素的唯一性是通过compareTo方法。
12,treeSet排序的第一种方式:让元素自身具备比较性,元素需要实现comparable接口,覆盖compareTo方法。这种方式也称为元素的自然排序,或者默认排序。
13,treeSet的第二种排序方式:当元素自身不具备比较性或者具备的比较性不是所需的,这时需要让容器自身具备比较性,定义比较器,将比较器对象作为参数传递给treeSet集合的构造函数。当两种排序都存在时,以比较性为主。
14,定义一个类,实现comparator接口,覆盖compare方法。
15,泛型:静态方法不可以访问类上定义的泛型,如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。
16,泛型可以定义在类上,方法上,接口上。
MAP:
hashTable:底层是哈希表数据结构,不可以存入null键和null值,该集合是线程同步的。
hashMap:底层是哈希表数据结构,允许使用null键和null值,该集合是线程不同步的
TreeMap:底层是二叉树数据结构,线程不同步,可以用于给Map集合中的键进行排序。
1,HashMap:添加元素,如果出现相同的值时,那么后添加 的元素的值会覆盖原有键对应值,并且会返回被覆盖的值。
2,Map集合的两种取出方式,
(1):通过keySet,将Map中的所有的键都存入到set集合。因为set集合具备迭代器,可以通过迭代方式取出所有的键,在根据get方法,获取到每一个键所对应的值。
(2):EntrySet,set<Map.Entry<k,v>>,将Map集合中的映射关系存入到set集合中。
3,Map.Entry其实entry 是一个接口,它是Map集合中的一个内部接口。
4,comparaTo方法的实现必须满足一下几个限制条件,自反性,对称性,传递性,非空性。