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,但这样太麻烦了。