Map
创建方法
Map<key, value> map = new HashMap<>(); //无序,散列表
Map<key, value> map = new LinkedHashMap<>(); //根据插入顺序排列
Map<key, value> map = new TreeMap<>(); //有序
常用方法
插入元素:Object put(Object key, Object val)
获取键值对应的值:Object get (Object key)
删除对应键值的元素:Object remove (Object key)
是否存在该键值:boolean containsKey (Object key)
返回键值的集合:Set keySet ();
Set<key> ks = map.keySet();
返回值的集合:Collection values ()
List<value> vl = new ArrayList<value>(map.values());
//以下为错误示范,因为values返回的是一个Collection集合,在向下转换时遇到了错误
List<String> vl = (List<String>) map.values();
Map的遍历
//以Map<String, String>为例
//第一种:通过keyset遍历,效率较低
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
}
//第二种:使用entryset遍历
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第三种:使用entryset遍历(简化版) 推荐 速度快
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第四种通过Map.values()遍历所有的value,但不能遍历key
for (String v : map.values()) {
System.out.println("value= " + v);
}
说明
Map.Entry是Map的内部类,它用来描述Map中的键/值对
常用方法:getKey()、getValue()
Map根据键值修改value的方法:再次put把原来的覆盖即可,因为map不存在重复的键值
Set
创建方法
Set<Integer> set = new HashSet<>(); //非排序,不能有重复值,可以随机访问,性能最好
Set<Integer> set = new TreeSet<>(); //排序,不能有重复元素
Set的遍历
//使用迭代器进行遍历
Iterator<Integer> it = set.iterator();
while (it.hasNext())
System.out.println(it.next());