java-----Map
import java.util.HashMap; import java.util.Map; public class MapDemo { /* * A:Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储 B:Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。 C:Collection中的集合称为单列集合,Map中的集合称为双列集合。 需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。 */ /* * 2.2Map常用功能 A:映射功能: V put(K key, V value) :以键=值的方式存入Map集合 B:获取功能: V get(Object key):根据键获取值 int size():返回Map中键值对的个数 C:判断功能: boolean containsKey(Object key):判断Map集合中是否包含键为key的键值对 boolean containsValue(Object value):判断Map集合中是否包含值为value键值对 boolean isEmpty():判断Map集合中是否没有任何键值对 D:删除功能: void clear():清空Map集合中所有的键值对 V remove(Object key):根据键值删除Map中键值对 E:遍历功能: Set<Map.Entry<K,V>> entrySet():将每个键值对封装到一个个Entry对象中,再把所有Entry的对象封装到Set集合中返回 Set<K> keySet() :将Map中所有的键装到Set集合中返回 Collection<V> values():返回集合中所有的value的值的集合 */ public static void main(String[] args) { //创建Map对象 Map<String,String> map = new HashMap<String,String>(); //V put(K key, V value) :就是将key映射到value,如果key存在,则覆盖value,并将原来的value返回 System.out.println(map.put("ITCAST001", "张三")); System.out.println(map.put("ITCAST002", "李四")); System.out.println(map.put("ITCAST001", "王五")); //void clear() : 清空所有的对应关系 //map.clear(); //V remove(Object key) :根据指定的key删除对应关系, //并返回key所对应的值,如果没有删除成功则返回null System.out.println(map.remove("ITCAST005")); //boolean containsKey(Object key) : 判断指定key是否存在 System.out.println(map.containsKey("ITCAST003")); //boolean containsValue(Object value):判断指定的value是否存在 System.out.println(map.containsValue("王五")); //boolean isEmpty() : 判断是否有对应关系 System.out.println(map.isEmpty()); //int size() : 返回对应关系的个数 System.out.println(map.size()); //V get(Object key) : 根据指定的key返回对应的value System.out.println(map.get("ITCAST002")); System.out.println(map); } }
import java.util.HashMap; import java.util.Map; import java.util.Set; public class Map2 { //关于Map的遍历方式 //利用keySet()方法遍历 /* * Map的第一种遍历方式: * 首先召集所有的丈夫 * 遍历所有的丈夫 * 获取每一个丈夫 * 让每一个丈夫去找他自己的媳妇 */ public static void main(String[] args) { //创建Map对象 Map<String, String>map=new HashMap<String, String>();//父类继承子类 //添加映射关系 map.put("谢婷疯", "张箔纸"); map.put("陈关西", "钟欣桶"); map.put("李亚碰", "王飞"); //遍历Map对象 Set<String> keys=map.keySet();//获取映射中的所有的键 //遍历所有的键 for(String key:keys) { //让每一个键找到他们对应的值就可以了 String value=map.get(key); System.out.println("键:"+key+"----"+"值:"+value); /* * 键:谢婷疯----值:张箔纸 键:李亚碰----值:王飞 键:陈关西----值:钟欣桶 */ } //第二种方式,利用entrySet()遍历Map Set<Map.Entry<String, String>> entrys=map.entrySet();//同样的获得所有键值信息 for(Map.Entry<String, String> entry:entrys) { String key=entry.getKey();//获得每一对键值对中的键 String valueString=entry.getValue();//获得每一对键值对中的值 System.out.println("Key:"+key+"----"+"Value:"+valueString); /* * Key:谢婷疯----Value:张箔纸 Key:李亚碰----Value:王飞 Key:陈关西----Value:钟欣桶 */ } } }
排序功能:
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; public class Map2Demo { public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("b", "b"); map.put("a", "c"); map.put("c", "a"); // 通过ArrayList构造函数把map.entrySet()转换成list List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(map.entrySet()); // 通过比较器实现比较排序 Collections.sort(list, new Comparator<Map.Entry<String, String>>() { @Override //比较函数,用entey()产生键对值。 public int compare(Map.Entry<String, String> mapping1, Map.Entry<String, String> mapping2) { return mapping1.getKey().compareTo(mapping2.getKey()); //mapping1的键和mapping2的键比较。键是升序。 } }); for (Map.Entry<String, String> mapping : list) {//遍历输出 System.out.println(mapping.getKey() + " :" + mapping.getValue()); } } }
TreeMap排序:
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.TreeMap; public class Map2Demo { public static void main(String[] args) { Map<String, String> map = new TreeMap<String, String>(new Comparator<String>() { @Override public int compare(String o1, String o2) { // 降序排序 return o2.compareTo(o1); } }); map.put("b", "b"); map.put("a", "c"); map.put("c", "a"); for (String key : map.keySet()) { System.out.println(key + " :" + map.get(key)); } } }
常用API
方法 | 描述 |
---|---|
clear() | 从 Map 中删除所有映射 |
remove(Object key) | 从 Map 中删除键和关联的值 |
put(Object key, Object value) | 将指定值与指定键相关联 |
putAll(Map t) | 将指定 Map 中的所有映射复制到此 map |
entrySet() | 返回 Map 中所包含映射的 Set 视图。Set 中的每个元素都是一个 Map.Entry 对象,可以使用 getKey() 和 getValue() 方法(还有一个 setValue() 方法)访问后者的键元素和值元素 |
keySet() | 返回 Map 中所包含键的 Set 视图。删除 Set 中的元素还将删除 Map 中相应的映射(键和值) |
values() | 返回 map 中所包含值的 Collection 视图。删除 Collection 中的元素还将删除 Map 中相应的映射(键和值) |
get(Object key) | 返回与指定键关联的值 |
containsKey(Object key) | 如果 Map 包含指定键的映射,则返回 true |
containsValue(Object value) | 如果此 Map 将一个或多个键映射到指定值,则返回 true |
isEmpty() | 如果 Map 不包含键-值映射,则返回 true |
size() | 返回 Map 中的键-值映射的数目 |
一纸高中万里风,寒窗读破华堂空。
莫道长安花看尽,由来枝叶几相同?