java-Map接口(查询表)

xiaoxiao2021-02-28  139

import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; /** * Map接口 * Map接口定义的集合又称查询表,用于存储"Key-Value"映射对。Key是Value的索引 * Map要求Key不允许重复,是否重复取决于Key元素 * equals方法比较的结果 * * 常用实现类;java.util.HashMap * HashMap:散列表,以散列算法实现的Map * */ public class MapDemo { public static void main(String[] args) { Map<String,Integer> map=new HashMap<String,Integer>(); /** * 向Map中存放元素的put方法 * V put(K key,V value) * 将Key-Value对存入Map,如果在集合中已经包含该Key, * 则操作将替换该Key所对应的Value,返回值为该Key原来所对应的Value(如果没有则返回null) */ map.put("语文", 89); map.put("数学", 56); map.put("化学", 54); map.put("体育", 89); map.put("语文", 98); System.out.println(map);//{体育=89, 数学=56, 化学=54, 语文=98} /** * 尽量不要使用基本类型去接收返回值,以为返回值为null时, * 触发自动拆箱时会引起空指针异常 */ Integer num=map.put("美术", 99); System.out.println(num);//null System.out.println(map);//{体育=89, 数学=56, 化学=54, 语文=98, 美术=99} Integer num1=map.put("美术", 99); System.out.println(num1);//99 /** * 从Map中获取元素 * -V get(Object key) * 返回参数key所对应的Value对象,如果不存在则返回null */ Integer num2=map.get("体育"); System.out.println(num2);//89 Integer num3=map.get("大海"); System.out.println(num3);//null /** * V remove(Object key) * 将给定的Key对应的键值对从map中删除,返回值为该key对应的value值 */ Integer num4=map.remove("美术"); System.out.println(num4);//99 System.out.println(map);//{体育=89, 数学=56, 化学=54, 语文=98} /** * containsKey()方法 * 判断某个Key是否在Map中存在(参考equals比较结果) * boolean containKey(Object key) * 若Map中包含给定的Key则返回true,否则返回false * boolean containValue(V v) * 若Map中包含给定的Value则返回true,否则返回false */ boolean containsKey=map.containsKey("化学"); System.out.println(containsKey);//true System.out.println(map.containsKey("大大"));//false System.out.println(map.containsValue(10));//false /** * 遍历Map * 遍历key:Set KeySet()该方法会将当前Map中所有的Key存入一个Set集合后返回 * 遍历Value(不常用) * 遍历Key-Value */ Map<String,Double> maps=new HashMap<String,Double>(); maps.put("a", 1.2); maps.put("b", 15.3); maps.put("c", 1.6); maps.put("d", 1.2); System.out.println(maps);//{a=1.2, b=15.3, c=1.6, d=1.2} Set<String> keyset=maps.keySet(); for(String key:keyset) { System.out.println("Key:"+key); } /** * 遍历每一组键值对 * set entrySet() * Entry是Map的内部类,其每一个实例用于表示Map中一组键值对 * 常用方法:getKey,getValue,这两个方法分别用于获取该组键值对中的Key与value * * entrySet方法会将当前maps中每一组键值对以一个Entry实例的形式存入Set集合后返回 */ Set<Entry<String,Double>> entryset=maps.entrySet(); for(Entry<String,Double> e:entryset) { String key=e.getKey(); Double value=e.getValue(); System.out.println(key+":"+value); } /** * 遍历所有的value * Collection values() * 将当前Map中所有的value存入一个集合后返回 */ Collection<Double> values=maps.values(); for(Double d:values) { System.out.println(d); } /** * LinkdedHashMap类 * 此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序, * 该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。 */ Map<String,Integer> link=new LinkedHashMap<String,Integer>(); link.put("da", 12); link.put("ha", 13); link.put("hei", 15); System.out.println(link);//{da=12, ha=13, hei=15} } }
转载请注明原文地址: https://www.6miu.com/read-21982.html

最新回复(0)