当前位置: 代码迷 >> Eclipse >> 这个程序小弟我不懂
  详细解决方案

这个程序小弟我不懂

热度:105   发布时间:2016-04-23 14:17:18.0
这个程序我不懂?
package day07;
import java.util.*;
public class MapTest {
public static void main(String[] args) {
Map map=new HashMap();
map.put("tangliang","131****4990");
map.put("zhangsan","13567890123");
map.put("lisi","131****4990");
map.put("wangwu","13567890123");
map.put("zhaoliu","131****4990");
map.put("tangliang","13888888888");
Set set=map.keySet();
Iterator it=set.iterator();
while(it.hasNext()){
Object obj=it.next();
System.out.println(obj+":"+map.get(obj));
}

}

}
输出结果为什么会是这样的:zhaoliu:13112344990
zhangsan:13567890123
lisi:13112344990
wangwu:13567890123
tangliang:13888888888怎么排序的?

------解决方案--------------------
HashMap 是不排序的.

你要排序,用TreeMap
------解决方案--------------------
Set 集是通过散列实现的。是无序的.
所以输出的循序并不会是你添加的循序.
如果想对, 对象进行排序 可以参考:


Java code
import java.util.Comparator;import java.util.ArrayList; public class Demo{ public static void main(String[] args){      User u1 =new User("aaa",12);  User u2 =new User("ddd",10);  User u3 =new User("ccc",20);  User u4 =new User("bbb",10);    ArrayList arrayList = new ArrayList();  arrayList.add(u1);  arrayList.add(u2);  arrayList.add(u3);  arrayList.add(u4);    Object[] users =arrayList.toArray();  System.out.println ("排序前。。。。");  for (int i = 0; i<users.length; i++){   System.out.println (users[i]);  }  System.out.println ("*******************************");  System.out.println ("排序后。。。。。");  //把排序规则交给sort方法。该方法就回按照你自定义的规则进行排序    java.util.Arrays.sort(users,new MyComparator());      for (int i = 0; i<users.length; i++){   System.out.println (users[i]);  }       }}class User{ String name; int age ;  public User(String name,int age){  this.name  = name;  this.age = age;  }  public String toString(){  return name+":::"+age; } }class MyComparator implements Comparator{ public  int compare(Object  obj1, Object obj2 ){  User u1 = (User)obj1;  User u2 = (User)obj2;  if(u1.age>u2.age){   return 1;  }else if(u1.age<u2.age){   return -1;  }else{   //利用String自身的排序方法。   //如果年龄相同就按名字进行排序   return u1.name.compareTo(u2.name);  }     }}
------解决方案--------------------
HashMap或者HashSet都是无序的。
如果你想排序,用TreeMap或者TreeSet。
也可以另外用一个ArrayList保存所有Key,但这样太麻烦了。
  相关解决方案