Map集合特点
Map是一个无序,不重复,无索引,键值对的集合。键不可以重复,值可以重复,键重复则后者覆盖前者,Map集合没有继承Collection接口。
Map中常用的API
package collection.map.d6_map_api;
import java.util.*;
/**
map集合常用api
*/
public class MapDemo {
public static void main(String[] args) {
//1.创建map集合,添加数据并输出
Map<String,Integer> maps=new HashMap<>();
maps.put("iphoneX",10);
maps.put("娃娃",20);
maps.put("iphoneX",100);//map集合后面重复的键对应的元素会覆盖前面重复的整个元素
maps.put("huawei",100);
maps.put("生活用品",10);
maps.put("手表",10);
System.out.println(maps);
//2.清空集合
// maps.clear();
// System.out.println(maps);
//3.判断集合是否为空,为空返回true,否则反之
System.out.println(maps.isEmpty());
//4.根据键获取对应值:public V get(Object key)
Integer key=maps.get("huawei");
System.out.println(key);
System.out.println(maps.get("生活用品"));;
//5.根据键删除整个元素(返回键的值)
System.out.println(maps.remove("iphoneX"));
System.out.println(maps);
//6.判断是否包含某个键,包含返回true,否则反之
System.out.println(maps.containsKey("huawei"));//true
System.out.println(maps.containsKey("iphoneX"));//false
//7.是否包含某个值
System.out.println(maps.containsValue(100));
System.out.println(maps.containsValue(55));
//8.获取全部键的集合public Set<K> keySet()
Set<String> keys=maps.keySet();
System.out.println(keys);
//9.获取全部的值集合:Collection<V> values()
Collection<Integer> values=maps.values();
System.out.println(values);
//10.集合大小
System.out.println(maps.size());
//11.合并其他集合
Map<String,Integer> map1=new HashMap<>();
map1.put("Java1",1);
map1.put("Java2",100);
Map<String,Integer> map2=new HashMap<>();
map2.put("Java2",1);//覆盖前面的Java2
map2.put("Java3",100);
map1.putAll(map2);//map2拷贝到map1
System.out.println(map1);
System.out.println(map2);
}
}
Map集合的遍历
共有三种遍历方式:
1.键找值
2.键值对
3.Lambda表达式
package collection.map.d7_map_traversal;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;
/**
map集合的遍历
*/
public class MapDemo {
public static void main(String[] args) {
Map<String,Integer> maps=new HashMap<>();
//添加元素:无序,不重复,无索引。
maps.put("iphoneX",10);
maps.put("娃娃",20);
maps.put("huawei",100);
maps.put("生活用品",10);
maps.put("手表",10);
//1.键找值遍历
//第一步:先拿到集合的全部键
Set<String> keys=maps.keySet();
//第二步:遍历每个键,根据键提取值
for (String key : keys) {
int value =maps.get(key);
System.out.println(key+"==>"+value);
}
System.out.println("----------------------------");
//2.键值对遍历
//第一步:把Map集合转化为Set集合
Set<Map.Entry<String, Integer>> entries = maps.entrySet();
//第二步:开始遍历
for(Map.Entry<String, Integer> entry:entries){
String key=entry.getKey();
int value=entry.getValue();
System.out.println(key+"==>"+value);
}
System.out.println("----------------------------");
//3.Lambda表达式
maps.forEach(new BiConsumer<String, Integer>() {
@Override
public void accept(String key, Integer value) {
System.out.println(key+"==>"+value);
}
});
System.out.println("----------------------------");
//简化
maps.forEach(( k, v)-> {System.out.println(k+"==>"+v);});
}
}
TreeMap集合
TreeMap集合自带排序(可排序,不重复(只要大小一样就认为重复),无索引)。
示例代码
package collection.map.d9_map_impl;
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
public class TreeMapDemo {
public static void main(String[] args) {
//TreeMap集合自带排序(可排序,不重复(只要大小一样就认为重复),无索引)
//可自定义排序
Map<Integer,String> maps1=new TreeMap<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
maps1.put(2,"张三");
maps1.put(4,"李四");
maps1.put(1,"马五");
maps1.put(19,"赵六");
System.out.println(maps1);
}
}
运行截图