您的位置:首页 > 编程语言 > Java开发

java中如何按输入的顺序遍历一个map和set

2017-10-02 14:54 597 查看
今天在使用如下的方式遍历HashMap里面的元素时

1 for (Entry<String, String> entry : hashMap.entrySet()) {
2     MessageFormat.format("{0}={1}",entry.getKey(),entry.getValue());
3 }


  发现得到的元素不是按照之前加入HashMap的顺序输出的,发现是:HashMap散列图、Hashtable散列表是按“有利于随机查找的散列(hash)的顺序”。并非按输入顺序。遍历时只能全部输出,而没有顺序。甚至可以rehash()重新散列,来获得更利于随机存取的内部顺序。

  总之,遍历HashMap或Hashtable时不要求顺序输出,即与顺序无关。

1 Map<String, String> paramMap = new HashMap<String, String>();


  可以用java.util.LinkedHashMap
就是按加入时的顺序遍历了。

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import javax.swing.plaf.synth.SynthSeparatorUI;

public class TestMap {

public static void main(String[] args) {
Map<String, String> map=new LinkedHashMap<String, String>();
map.put("1", "a");
map.put("2", "b");
map.put("3", "c");
Set<String> set=map.keySet();
for(String i:set){//方法一
String str=map.get(i);
System.out.println(i+","+str);
}
System.out.println("--------------");
Set<Entry<String, String>> entry=map.entrySet();//方法二
Iterator<Entry<String, String>> it=entry.iterator();
while(it.hasNext()){
Entry<String, String> str=it.next();
System.out.println(str.getKey()+","+str.getValue());
}
System.out.println("---------------");
Collection<String> set1= map.values();//方法三
for(String i:set1){
System.out.println(i);
}
}

}




Set<String> set2=new LinkedHashSet<String>();


  类似的还有 java.util.LinkedHashSet

import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import javax.swing.plaf.synth.SynthSeparatorUI;

public class TestMap {

public static void main(String[] args) {
Set<String> set2=new LinkedHashSet<String>();
set2.add("aaa");
set2.add("qqq");
set2.add("wes");

for(String s:set2){//遍历方法一
System.out.println(s);
}
Iterator<String> it= set2.iterator();
System.out.println("-----------------");
while(it.hasNext()){//遍历方法二
System.out.println(it.next());
}
}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: