一、Collection接口(分set和List)
1、set(HashSet、TreeSet)不能存储重复元素。TreeMap实现了SortedMap接口,能对键对象进行排序。同TreeSet一样,TreeMap也支持自然排序和客户化排序两种方式
2、List(分ArrayList和LinkedList)可以有重复元素;ArrayList底层为数组,查找方便,删除和添加需要移动数据;LinkedList底层为链表,查找不便,添加、删除方便,只需要移动指向即可。
3、 ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。
每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
4、 LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:
List list = Collections.synchronizedList(new LinkedList(...));
二、map(分hashmap、treemap)
1、map不是集合,存储键值对,键不能为空,值可以为null。
2、HashMap按照哈希算法来存取键对象,有很好的存取性能。和HashSet一样,要求当两个键对象通过equals()方法比较为true时,这两个键对象的hashCode()方法返回的哈希码也一样。
3、TreeMap实现了SortedMap接口,能对键对象进行排序。同TreeSet一样,TreeMap也支持自然排序和客户化排序两种方式。
=========================================================================
三、ArrayList练习
package collection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import org.junit.Test;
/**
*
* @function:
*
* @desc:1、 ArrayList 先进先出;值大小无次序,以添加的顺序进行存储
*
* @author: LLJ
* @date: 2019年2月20日 下午7:26:36
*/
public class ArraryList {
//ArraryList
@Test
public void arrList(){
List arrList=new ArrayList();
arrList.add(1);
arrList.add(8);
arrList.add(88);
arrList.add(8888);
Iterator it=arrList.iterator();
while(it.hasNext()){
System.out.println("--" +it.next());
}
}
//ArrayList,泛型 String、Integer
@Test
public void arrayListTest(){
List<String> list=new ArrayList<String>();
list.add(0,"java"); //指定的位置插入值
list.add(1,"c");
list.add(2,"c"); //可以重复
list.add("ll");
System.out.println(list.size()+"--"+list.get(2));
System.out.println("=====1====");
//for
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
System.out.println("====2=====");
//for
for(String s : list){
System.out.println(s);
}
System.out.println("====3=====");
//iterator
Iterator<String> it=list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
System.out.println("====4=====");
//ListIterator
ListIterator<String> lit=list.listIterator();
while(lit.hasPrevious()){
System.out.print(lit.hasPrevious() + " ");
}
}
//ArrayList,泛型实体
@Test
public void entityArrayList(){
List<Student> ls=new ArrayList<Student>();
ls.add(new Student("1","AA"));
ls.add(new Student("2","BB"));
//
for(Student stu : ls){
System.out.println(stu.id+"--"+stu.name);
}
}
}