集合框架Map

    xiaoxiao2022-07-07  190

    Map集合

    1.Map集合常用的方法:

    增加、删除、修改、查找(获取)、大小 V put(K k, V v); V remove(Object k); put()方法也起到修改功能 V get(Object k); int size()

    方法归类 map集合中存放的都是一组组映射关系 key=value

    初始map

    在集合中允许嵌套map集合key不能重复put注意1.添加元素的同时,它可以编辑原有的元素如果说集合中没有key对应的value,那么就往集合中添加元素如果说集合中对应的key有value值,则代表替换原有的值2.返回替换前key对应的value值entrySetKeySet public class MapDemo { public static void main(String[] args) { HashMap<String, Object> map = new HashMap<>(); map.put("java01", 1); map.put("java02", 2); map.put("java03", 3); map.put("java04", 4); map.put("java05", 3); Object put = map.put("java04", "*");

    // 需要用到身份证号做其他的查询 System.out.println(put); System.out.println(map);

    Set<Entry<String, Object>> entrySet = map.entrySet(); for (Entry<String, Object> entry : entrySet) { System.out.println(entry.getKey() + "===" +entry.getValue()); } System.out.println("-----------------------------"); Set<String> keySet = map.keySet(); for (String key : keySet) { System.out.println(key + "===" + map.get(key)); } } }

    注意:

    添加元素时,如果键已经在集合中存在,那么后添加的值会覆盖原来的值,并且put方法会将原有的值返回

    2.应用1

    1、将学生作为键,地址作为值进行存储,名字年龄相同则被认定为一个人,最后输出 a.建立一个student类,实列化作为key添加到map集合中 b.对学生进行判重

    2、最后按年龄进行排序 3、需求改变、按姓名进行排序 public class TreeMapDemo { public static void main(String[] args) { // Map<Student, String> map = new HashMap<>(); // Map<Student, String> map = new TreeMap<>(); Map<Student, String> map = new TreeMap<>(new StuComp());

    map.put(new Student("liuting",18), "beijing"); map.put(new Student("wangwang",23), "xingjiang"); map.put(new Student("xuyang",43), "nanjing"); map.put(new Student("goudan",25), "shanghai"); map.put(new Student("liuting",18), "beijing"); map.put(new Student("liutingting",18), "beijing"); System.out.println(map.size()); Set<Entry<Student, String>> entrySet = map.entrySet(); for (Entry<Student, String> entry : entrySet) { System.out.println(entry.getKey() + "====" + entry.getValue()); } } } @Override public int hashCode() { return this.getName().hashCode()+this.getAge()*39; } @Override public boolean equals(Object obj) { Student stu = (Student)obj; return this.getAge()==stu.getAge()&& this.getName().equals(stu.getName()); } @Override public String toString() { return "Student [name="+name+" , age="+age+"]"; } //按年龄排序 @Override public int compareTo(Student o) { int num = this.getAge() - o.getAge(); if(num==0) { return this.getName().compareTo(o.getName()); } return num; } } //按姓名排序 class StuComp implements Comparator<Student>{ @Override public int compare(Student o1, Student o2) { int num = o1.getName().compareTo(o2.getName()); if(num==0) { return o1.getAge() - o2.getAge(); } return num; } }

    3.应用2 :统计字符串中字符出现次数

    public class HashMapDemo { public static void main(String[] args) { String str = “shfhgkjfhugrjfjvnjnskj”; str = cishu(str); System.out.println(str); }

    /** * 字符串出现次数统计功能 * @param str * @return */ private static String cishu(String str) { char[] charArray = str.toCharArray(); Map<Character, Integer> map = new TreeMap<>(); for (char c : charArray) { Integer value = map.get(c); if(value==null) { map.put(c, 1); }else { map.put(c, ++value); } } StringBuffer sb = new StringBuffer(); for(Map.Entry<Character, Integer> entry:map.entrySet()) { sb.append(entry.getKey() + "("+entry.getValue()+")"); } return sb.toString(); } }

    结果输出为:f(3)g(2)h(3)j(5)k(2)n(2)r(1)s(2)u(1)v(1) 注意: map集合中的泛型要使用包装类,或者是引用数据类型

    最新回复(0)