Java类集总结之二

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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可以重复, 只要两个对象的地址不同即可。

 

以上是关于Java类集总结之二的主要内容,如果未能解决你的问题,请参考以下文章

Java类集总结之一

Java 基础知识总结 3

Java 类集初探

第41节:Java当中的类集框架

染色体基因芯片分析和第二代测序应用的区别

浅谈java类集框架和数据结构