一. 集合框架
二. 集合的类型与各自的特性
- Collection:单列集合
- List:有储存顺序,可重复
- ArrayList:数组实现,查找快,增删慢
增删慢由于是数组实现,在增和删的时候会牵扯到数组的增容,以及拷贝元素,所以慢。数组是可以直接安索引查找,索引查找时较快。 - LinkedList:链表实现,增删快,查找慢
由于是链表实现,增加时只要让前一个元素记住自己就可以,删除时让前一个元素记住后一个元素,后一个元素记住前一个元素,这样增删效率较高,但查询时需要一个一个遍历,所以效率低。 - Vector:和ArrayList原理相同,但线程安全,效率略低
和ArrayList实现实现方式相同,但考虑了线程安全问题,所以效率略低。
- ArrayList:数组实现,查找快,增删慢
- Set:无存储顺序,不可重复
- HashSet:线程不安全,存取速度快。
底层是以哈希表实现。 - TreeSet:红-黑数的数据结构,默认对元素进行自然排序。
如果在比较的时候两个对象返回值为0,那么元素重复。
- HashSet:线程不安全,存取速度快。
- Map:键值对 键不可重复,值可以重复
- HashMap:线程不安全,存取速度快。
底层是以哈希表实现。 - TreeMap:红-黑树是我数据结构,默认对元素进行自然排序。
返回值为0,那么元素重复。 - HashTable:底层也是使用Hash表维护的,存取速度快,存储元素是无序的。
- HashMap:线程不安全,存取速度快。
三. Map集合的基本使用
- put(key、value)
- clear()
- remove(key)
- containskey(key)
- containsvalue(value)
- HashMap<key,value> map=new HashMap<key,value>();
四. Map集合的输出
- Collection和Map接口保存对象的区别:
1) Collection中的每一个元素都是一个独立的对象
2) Map中的每一个元素都是key和value“结伴而行”的组合对象——也就是所谓的偶对象。
2.Map集合输出思路
Map.Entry是Map中定义的一个内部接口,而且这个接口是一个static定义的外部接口,在这个接口之中定义了两个非常重要的方法:
1)取得对应的key的方法。public K getKey();
2 ) 取得对应的Value的方法。public V getValue();
那么清楚了Map.Entry的作用之后,下面就可以采用如下步骤进行map的Iterator的输出了。
1) 通过Map接口之中entrySet()方法将map集合变成set集合,set之中的泛型类型为map.entry。
2 ) 利用set接口之中的iteration()方法取得iteration接口对象,此时的泛型类型依然为Map.Entry;
3 ) 利用Iteration迭代出每一个Map.Entry对象,在使用getKey()和getValue()方法取出内容。
案例:利用Iterator输出Map接口
package Dao;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* Created by pc on 2017/7/8.
*/
public class IteratorMapDemo {
public static void main(String [] args){
Map<Integer,String> map=new HashMap<Integer, String>();
map.put(1,"张三");
map.put(2,"李四");
map.put(3,"王麻子");
Set<Map.Entry<Integer,String>> set=map.entrySet();
Iterator<Map.Entry<Integer, String>> iter=set.iterator();
while (iter.hasNext()){
Map.Entry<Integer,String> me=iter.next();
System.out.println(me.getKey()+"-->"+me.getValue());
}
}
}
运行结果: