集合:
一.collection 接口里面存储的元素是可以迭代的 ,也可用foreach来遍历。
(1)list :元素有序可重复,有下标。
Arraylist 集合:
特点:底层是数组。有序 ,查询快,增删慢。
扩容:在初始化容量长度是10,扩容是扩容到原容量的1.5倍·。
Arraylist集合的遍历方法
//创建一个ArrayList集合
List array = new ArrayList();
//在ArrayList集合里面添加元素
array.add("1");
array.add("2");
array.add("3");
//迭代器编辑遍历ArrayList集合
//获取迭代器
Iterator iterator = array.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
//foreach遍历ArrayList集合
for(Object o :array){
System.out.println(o);
}
LinkedList集合:
特点:底层是双向链表。有序,查询慢,增删快
Linkedlist遍历
//创建一个LinkedList集合
List linked =new LinkedList();
linked.add(1);
linked.add(2);
linked.add(3);
//迭代器遍历
Iterator iterator = linked.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
//foreach遍历
for(Object o:linked){
System.out.println(o);
}
Linkedlist集合特有方法
//创建一个LinkedList集合
LinkedList linked =new LinkedList();
linked.add(1);
linked.add(2);
linked.add(3);
//获取追后一个元素。
Object o = linked.getLast();
//删除最后一个元素。
Object o2 =linked.removeLast();
//获取第一个元素。
Object o3 = linked.getFirst();
//删除第一个元素。
Object o4 =linked.removeFirst();
Vector集合:
特点:底层是数组的数据结构。Vector是线程安全的 ,他的所有方法都是synchronized修饰的。
(2)set:
HashSet集合:
HashSet:底层是new了一个HashMap集合,在向里面添加元素的时候其实是把元素添加在hashMap的key上。
所以HashSet集合是无序不能重复的。 HashSet集合底层是一个哈希表的数据结构。
HashSet集合初始化容量是16。初始化容量建议是2的倍数。HashSet扩容是扩容到原来的2倍。
TreeSet集合:
TreeSet:底层是new了一个TreeMap集合,TreeMap集合底层是一个红黑树的数据结构,添加元素的时候把元素放在TreeMap集合的key上。
所以TreeSet集合是不能重复、无序、可排序的。
二、Map :Map里面存储的元素都以<k,v>形式来存储的。k无序,不可重复。
(1)HashMap集合:
HashMap集合底层是哈希表,在jdk8以后,如果单项链表上的元素达到8个单向链表的数据结构就会变成红黑树的数据结构。当红黑树上的节点小于6时就会变回单向链表。
Hash Map初始化容量时16.默认加载因子时0.75。扩容是变为原来的两倍。HashMap集合的key和value可以为null。
(2)HashTable集合:
Hash Table集合底层是哈希表的数据结构。是线程安全的。其中所有的方法都是sychronzied修饰的。效率较低
<key,value>不允许为null。
HashTable集合初始化容量为11。扩容是变为原容量的二倍+1。
Properties 集合是HashTable集合子类。是线程安全的。properties集合和Hash table集合相似,但是<key,value>只支持存储String类型的数据Properties被称为属性类。
(3)TreeMap集合:
TreeMap集合底层是一个二叉树,可以通过key部分自动排序。