集合大致分为三类
List:有序可重复
Set:无序不可重复
Map:俗称字典,key value
Java集合类由两个接口派生:Collection和Map,其中Collection下主要有Set、List、Queue三个接口,而Map接口主要是各种Map接口。
Iterator接口用来迭代集合对象进行输出的,必须依赖于Collection才可使用
public List<Integer>list=new ArrayList<>();
public void each(){
list.add(1);
list.add(2);
Iterator c= list.iterator();
list.add(3);//这样就废了,已经给了迭代器对象了,不能再改变集合了ConcurrentModificationException
while(c.hasNext()){
System.out.println(c.next());
}
}
集合与数组区别:集合是可变的,数组编译时候就确定了大小,数组不但可以存基本数据类型也可存对象的引用,集合只可以存对象引用。
详细介绍:
ArrayList:单线程,基于数组开发,数组特性都有了
Vector:区别多线程,其他一样
LinkedList:基于双向链表 前指针 值 后指针,链表特性都有。
HashSet:基于hash表,元素唯一性依赖于hashCode()和equals(),得重写equals跟hashcode方法。
LinkedHashSet:基于链表和哈希表,链表保证元素有序,哈希表保证元素唯一
TreeSet:基于红黑树,元素排序自然排序,比较器排序,唯一性,根据返回的值是否是0来决定
HashTable跟HashMap:多线程与单线程的区别。