1:List集合中三个子实现类:
1) ArrayList:底层数据结构是数组,查询快,增删慢;线程不同步,不安全,执行效率高.
LinkedList:底层数据结构是链表,查询慢,增删快;线程不同步,不安全,执行效率高.
Vector:底层数据结构是数组,查询快,增删慢;线程同步,安全,执行效率高.(主要是针对枚举)
2) LinkedList特有方法:
boolean addFirst(Object o);在第一个位置添加元素
boolean addLast(Object o);在最后一个位置添加元素
public Object getFirst(); public Object getLast()
public Object removeFirst();移除第一个元素,返回第一个元素; public Object removeLast();
3) Vector特有方法:
public boolean addElement(Object o);
public Object elementAt'(int index);
public Enumeration elements();
public boolean hasMoreElements();
public Object nextElement();
2:JDK5以后的新特性:
1) 泛型:
泛型的特点:提高了程序的安全性;将运行时期的异常提到了编译时期;不在需要进行强制的类型转换.
泛型可以在类,接口,方法,但是更多的是使用在集合上.
泛型的定义:
ArrayList<String> al = new ArrayList<String>();
泛型的高级特性:
<?> :代表的是所有的引用类型,包括自己定义的
<? extends E>:代表的是E及其它的子类
<? super E>:代表的是E及其它的父类
2) 增强for
增强for主要就是替代Iteratir出现的,增强for主要遍历集合
3) 静态导入
可以直接导入类的静态方法,来直接使用
4) 可变参数
这个方法的参数类型一样,但是数量很多,可以使用可变参数,可变参数最后的形式参数可以当做是一个数组
3:Set集合
1) Set集合元素是唯一的,而List集合中元素是可以重复的,而且List集合中的元素是有序的.
2) HashSet元素是无序的,存储和取出的顺序是不一样的,而其中的唯一性是通过hash值来保证的,add();方法中使用了hashMap<K,V>中的put(K,V)方法,计算出相应的hash值.使用HashSet来存储自定义的对象,需要在类中复写equals方法和hashCode()方法,因为在put(K,V)方法中,在hash值相同的情况下,也会通过equals()方法来对对象进行比较.
3) LinkedHashSet 通过使用链表来保证数据的有序性
4)TreeSet 是基于TreeMap来实现的,是基于红黑树结构,
TreeSet集合常用有两方法个构造方法:第一个是无参构造;需要自定义的类实现Comparable接口中的compareTo()方法;
第二个是添加一个Comparator接口类的子实现对象;a)自定义一个类来实现Comparator接口中的compare()方法,b)直接使用匿名内部类的方式来实现Comparetor接口.