首先介绍一个常用的几个集合类的特点
List集合
ArrayList:底层基于Object的动态数组(可以进行动态扩容)。适用于经常查改的场景,线程不安全。存取元素(有序,可重复)
linkedList:底层基于双向链表(也是与ArrayList的本质区别)。适用于经常增删的场景,线程不安全。存取元素(有序,可重复)
Vector:(其实就是一个线程安全的ArrayList,因为线程安全,所以效率相比较低一些。)
Set集合
HashSet:底层基于HashMap(哈希表),线程不安全,集合中可以添加null。存取元素(无序,不可重复)。
linkedHashSet;底层基于linkedHashMap(哈希表和链表实现的接口)(从而存取元素是有序的),线程不安全,集合中可以添加null。存取元素(有序,不可重复)。
TreeSet:底层基于TreeMap(哈希表和链表实现的接口)(从而存取元素是有序的),线程不安全,集合中可以添加null。存取元素(无序,不可重复)。
集合遍历的4种方法1.普通for循环(不适用于Set集合,因为Set集合底层基于哈希表,没有提高带索引的方法。)
举例:
for (int i = 0; i < arrayList.size(); i++) { // size表示集合的个数
System.out.print(arrayList.get(i));
}
2.增强for循环(List和Set都适用)
举例:
for (Object d : linkedList) {
System.out.print(d);
}
System.out.println("rn==================");
for (Object f : linkedHashSet) {
System.out.print(f);
}
3.单项迭代器(iterator都适用)
举例:
Iterator iterator = linkedHashSet.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next());
}
Iterator iterator2 = arrayList.iterator();
while (iterator2.hasNext()) {
System.out.print(iterator2.next());
}
4.双向迭代器(只适用于List集合,因为List是基于链表的)
举例:
ListIterator iterator = linkedList.listIterator();
while(iterator.hasPrevious()){
System.out.println(iterator.previous());
}



