1.数组和集合
数组是用来存储相同数据类型(基本类型,引用类型)的一组数据。
集合不能存储基本类型的数据,只能存储对象。
数组和集合可以通过toArray()、Arrays.asList()相互转换
2.Collection接口:表示集合(有两个重要的子接口List,Set)
遍历Collection的每一个元素,用到Iterator接口(有hasNext()、next()、remove()方法)
Collections:集合类 封装了一些操作方法
3.
Set接口(add()、get()、contains()、iterator())
都是线程不安全的,解决办法:Set set=Collections.synchronizedSet(new HashSet());
java.util.concurrent里有线程安全的方法,如copyAndWriterArrayList()
HashSet(哈希表来保证元素的唯一性)等值查询效率高------>无序、不重复
Treeset(红黑树算法) 范围查询效率高, 通过实现Comparable接口,重写compareTo()方法实现自然排序------>无序、不重复
通过new Comparator对象,重写compare()方法实现定制排序
LInkedHashSet是HashSet的子类,(LinkedHashSet有链表算法)------>有序、不重复
List(add()、get()、contains()、iterator())
ArrayList:底层是变长数组(查询快)
LinkedList:底层是链表(随机插入、删除快)
Map (put()、get()、containsKey())
Map map=Collections.synchronizedMap(new HashMap());
HahMap:key和value都允许为null
TreeMap:key不可为null,value可为null
HashTable:key和value都不允许为null,线程安全的(所有方法被synchronized修饰)
LinkedHashMap:HashMap的子类
4.Set、List集合可以相互转换
Set set=new HashSet(list);
List list=new ArrayList(set);
可以将Map间接转换为Set、List
Set set=map.keySet();
List list=map.values();