• Java类集总结之二


    1)Map接口

    关系:Map(接口)

    HashMap(非抽象子类)、TreeMap(非抽象子类)

    在开发中,Map集合的内容多用来查询,全部输出的操作较少;而Collection接口在开发中的主要作用就是用来传递内容及输出的。

    2)

     1 import java.util.HashMap;
     2 import java.util.Map;
     3 
     4 public class HashMapDemo01 {
     5 
     6     public static void main(String[] args) {
     7         Map<String,String> map = null;
     8         map = new HashMap<String,String>();        //利用HashMap实例化Map
     9         
    10         map.put("mldn", "www.mldn.cn");
    11         map.put("zhangsan", "www.zhangsan.cn");
    12         map.put("lisi", "lisi");
    13         String val = map.get("zhangsan");
    14         
    15         System.out.print("取出的内容是:"+val);
    16     }
    17 }

    3)

    排序子类TreeMap

    key进行排序。

    Map接口中的内容不能直接使用迭代输出因为每个位置存放都是一对值

    4)

     1 import java.util.Iterator;
     2 import java.util.Map;
     3 import java.util.Set;
     4 import java.util.TreeMap;
     5 
     6 public class TreeMapDemo01 {
     7 
     8     public static void main(String[] args) {
     9         Map<String,String> map = null;
    10         map = new TreeMap<String,String>();
    11         map.put("b", "www.b.cn");
    12         map.put("a", "wwww.a.cn");
    13         map.put("c", "www.c.cn");
    14         
    15         Set<String> keys = map.keySet();
    16         Iterator it = keys.iterator();
    17         
    18         while(it.hasNext()){
    19             String str = (String) it.next();
    20             System.out.println(str + "……" + map.get(str));
    21         }
    22     }
    23 }

    5)Map输出的最标准操作流程:

     1 import java.util.HashMap;
     2 import java.util.Iterator;
     3 import java.util.Map;
     4 import java.util.Set;
     5 
     6 public class IteratorDemo04 {
     7 
     8     public static void main(String[] args) {
     9         Map<String, String> map = null;
    10         
    11         map = new HashMap<String, String>();
    12         map.put("zhangsan", "www.zhangsan.cn");
    13         map.put("lisi", "www.lisi.cn");
    14         Set<Map.Entry<String, String>> allSet = null;
    15         allSet = map.entrySet();
    16         Iterator<Map.Entry<String, String>> iter = null;
    17         iter = allSet.iterator();
    18         while(iter.hasNext()){
    19             Map.Entry<String, String> me = iter.next();
    20             System.out.println(me.getKey() + "……" + me.getValue());
    21         }
    22     }
    23 }

    6)非系统类直接作为key

    和在HashSet中存储非系统类一样,必须在自定义类中覆写Object类的hashCode()、

    equals()和toString()方法,之后便能和使用系统类(如String类)那样,可以通过匿名对象找到相应的value

     1 import java.util.HashMap;
     2 import java.util.Map;
     3 
     4 class Person{
     5     private String name;
     6     private int age;
     7     public Person(String name, int age){
     8         this.name = name;
     9         this.age = age;
    10     }
    11     public boolean equals(Object obj){
    12         if(this == obj){
    13             return true;
    14         }
    15         if(!(obj instanceof Person)){
    16             return false;
    17         }
    18         Person p = (Person) obj;
    19         if(this.name.equals(p.name)&&(this.age ==p.age)){
    20             return true;
    21         }else{
    22             return false;
    23         }
    24     }
    25     public int hashCode(){
    26         return this.name.hashCode() * this.age;
    27     }
    28     public String toString(){
    29         return this.name + "……" + this.age;
    30     }
    31 }
    32 
    33 public class HashMapDemo08 {
    34 
    35     public static void main(String[] args) {
    36         Map<Person, String> map = null;
    37         map = new HashMap<Person, String>();
    38         Person per = new Person("张三", 30);
    39         map.put(per, "zhangsan");
    40         System.out.println(map.get(per));
    41     }
    42 
    43 }

    HashMap类和TreeMap类中的key不能重复,如果重复就会被覆盖。

    IdentityHashMap类中,key可以重复, 只要两个对象的地址不同即可。

  • 相关阅读:
    转:Visio之取消自动对齐与粘附
    转:Excel怎样修改图例名称
    一张图说明学习率和loss之间的关系
    转:loss不收敛或不下降问题处理经验
    N-UCLA骨架数据可视化
    转:IEEE论文投稿流程(格式说明,新手指南,模板)
    Ubuntu下无法安装sun-java6-jdk的解决办法
    Git 学习笔记一
    轮播特效小项目总结
    第9次作业--接口及接口回调
  • 原文地址:https://www.cnblogs.com/XuGuobao/p/7260683.html
Copyright © 2020-2023  润新知