集合
|-------Collection接口:单列集合,用来存储一个一个的对象。
|-----List接口:存储有序的,可重复的数据
|-----ArrayList、LinkedList(链表结构)、Vector(几乎不使用)
|-----Set接口:存储无序的,不可重复的数据
|-----HashSet:主要实现类,线程不安全的,可以存储null值。
|-----LinkedHashSet:作为HashSet子类,使得遍历其内部数据时,可以按照添加的顺序去遍历
|-----TreeSet:底层使用二叉树(红黑树)存储,可以按照添加对象的指定属性进行排序
|--------Map:双列集合,用来存储一对(key--value)一对的数据
|----HashMap、LinkedHashMap、TreeMap、HashTable、Properties
List常用方法
void add(int index,Object ele):在index位置插入ele元素 boolean addAll(int index,Collection eles):从index位置开始将eles中的所有元素添加进来 Object get(int index):获取指定index位置的元素 int indexOf(Object obj):返回obj在集合中首次出现的位置,匹配不到返回-1 int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置 Object remove(int index):移除指定index位置的元素,并返回此元素 Object set(int index,Object ele):设置指定index位置的元素为ele List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合
HashSet
1.无序性:不等于随机性,存储的数据在底层数组中并非按照数组索引的顺序添加,而是根据数据的哈希值决定的。
2.不可重复性:保证添加的元素按照equals()判断时,不能返回true,相同的元素只能添加一个
在Set中添加的数据,其所在的类一定要重写hashCode()和equals(),重写hashCode()和equals()
Map
|--------Map:双列集合,用来存储一对(key--value)一对的数据
|----HashMap:Map的主要实现类,线程不安全的,效率高;可以存储null的key和value。
|----LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历。原因:在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素
|----TreeMap:保证按照添加的key--value对进行排序,实现排序遍历。此时考虑key自然排序和定制排序,底层使用红黑树
|----HashTable:线程安全的,效率低;不可以存储null的key和value。(很少使用)
|----Properties:常用来处理配置文件,key和value都是String类型
Map中的key:无序的,不可重复的,使用Set存储所有的key,key所在的类要重写equals()和hashCode()(以hashMap为例)
Map中的value:无序的,可重复的 ,使用Collection存储所有的value,value所在的类要重写equals()
一个键值对:key-value构成一个Entry对象
Map中的Entry:无序的,不可重复的,使用Set存储所有的Entry
Map接口常用方法
遍历方式一:
@Test public void test2(){ Map map = new HashMap(); map.put("a",111); map.put("b",222); map.put("c",333); map.put("d",444); map.put("e",555); map.put("f",666); Set set = map.entrySet(); Iterator iterator = set.iterator(); while (iterator.hasNext()){ Map.Entry entry = (Map.Entry) iterator.next(); System.out.println(entry.getKey()+":"+entry.getValue()); } }
方式二:
@Test public void test2(){ Map map = new HashMap(); map.put("a",111); map.put("b",222); map.put("c",333); map.put("d",444); map.put("e",555); map.put("f",666); Set keySet = map.keySet(); Iterator iterator = keySet.iterator(); while (iterator.hasNext()){ Object key = iterator.next(); System.out.println(map.get(key)); } }