`
runfeel
  • 浏览: 902780 次
文章分类
社区版块
存档分类
最新评论

当key为自定义类时,TreeMap的使用及输出

 
阅读更多

因为类本身并不知道怎么进行比较所以类要实现comparable接口并且要覆写public int compareTo(Person o)此方法。而且还要覆写equals()和hashCode()方法。如果不覆写equals()方法那么即使对象对应值都相等,但地址内存不一样程序还是会输出重复项。

主程序

package liyuanjinglyj;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class MyMainToPerson {
<wbr>public static void main(String[] args) {<br><wbr><wbr><wbr>Map map=new TreeMap();<br><wbr><wbr><wbr>map.put(new Person("sssss",22), "jingying");<br><wbr><wbr><wbr>map.put(new Person("bbbbb",23), "gaoshou");<br><wbr><wbr><wbr>map.put(new Person("xxxxxxx",21), "dineng");<br><wbr><wbr><wbr>System.out.println(map.get(new Person("sssss",22)));<br><wbr><wbr><wbr>Set&gt; set=map.entrySet();<br><wbr><wbr><wbr>Iterator&gt; iter=set.iterator();<br><wbr><wbr><wbr>while(iter.hasNext()){<br><wbr><wbr><wbr><wbr>Map.Entry mp=iter.next();<br><wbr><wbr><wbr><wbr>System.out.println(mp.getKey()+"-&gt;&gt;"+mp.getValue());<br><wbr><wbr><wbr>}<br> //<wbr><wbr>Map<wbr>map=new HashMap();<br> //<wbr><wbr>map.put("zhangsan",1);<br> //<wbr><wbr>map.put("zhangsan",2);<br> //<wbr><wbr>map.put("liyuanjinglyj",3);<br> //<wbr><wbr>map.put("baoling",4);<br> //<wbr><wbr>for(Map.Entry me : map.entrySet()){<br> //<wbr><wbr><wbr>System.out.println(me.getKey()+"-&gt;&gt;"+me.getValue());<br> //<wbr><wbr>}<br><wbr><wbr><br> //<wbr><wbr>Set&gt; set=map.entrySet();<br> //<wbr><wbr>Iterator&gt; iter=set.iterator();<br> //<wbr><wbr>while(iter.hasNext()){<br> //<wbr><wbr><wbr>Map.Entry mp=iter.next();<br> //<wbr><wbr><wbr>System.out.println(mp.getKey()+"-&gt;&gt;"+mp.getValue());<br> //<wbr><wbr>}<br><wbr><wbr><wbr>}<br> }<br> 自定义类Perso</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

package liyuanjinglyj;

public class Person implements Comparable{
<wbr>String name;<br><wbr>int age;<br><wbr>public Person(String n,int a){<br><wbr><wbr>this.name=n;<br><wbr><wbr>this.age=a;<br><wbr>}<br><wbr>public int compareTo(Person o){<br><wbr><wbr>if(this.age&gt;o.age){<br><wbr><wbr><wbr>return 1;<br><wbr><wbr>}<br><wbr><wbr>else if(this.age<br><wbr><wbr><wbr>return -1;<br><wbr><wbr>}<br><wbr><wbr>else{<br><wbr><wbr><wbr>return this.name.compareTo(o.name);<br><wbr><wbr>}<br><wbr>}<br><wbr>public int hashCode() {<br><wbr><wbr>return this.name.hashCode()*this.age;<br><wbr>}<br><wbr>public boolean equals(Object obj) {<br><wbr><wbr>if(this==obj)<br><wbr><wbr><wbr>return true;<br><wbr><wbr>if(!(obj instanceof Person))<br><wbr><wbr><wbr>return false;<br><wbr><wbr>Person p=(Person)obj;<br><wbr><wbr>if(this.name==p.name&amp;&amp;this.age==p.age){<br><wbr><wbr><wbr>return true;<br><wbr><wbr>}<br><wbr><wbr>else{<br><wbr><wbr><wbr>return false;<br><wbr><wbr>}<br><wbr>}<br><wbr>public String toString(){<br><wbr><wbr>return "姓名"+this.name+"年龄"+this.age;<br><wbr>}<br> }</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics