Java:反转哈希表键集上的迭代顺序。怎么用?
我在哈希表上迭代,将字符串值连接起来:Java:反转哈希表键集上的迭代顺序。怎么用?,java,hashtable,Java,Hashtable,我在哈希表上迭代,将字符串值连接起来: Iterator<String> it = jsonHashtableTemp.keySet().iterator(); String json = new String("["); while (it.hasNext()) { String s = it.next(); json = json.concat(jsonHashtableTemp.get(s).toString());
Iterator<String> it = jsonHashtableTemp.keySet().iterator();
String json = new String("[");
while (it.hasNext()) {
String s = it.next();
json = json.concat(jsonHashtableTemp.get(s).toString());
if (it.hasNext()) {
json = json.concat(", ");
}
}
json = json.concat("]");
Iterator it=jsonHashtableTemp.keySet().Iterator();
字符串json=新字符串(“[”);
while(it.hasNext()){
字符串s=it.next();
json=json.concat(jsonHashtableTemp.get.toString());
if(it.hasNext()){
json=json.concat(“,”);
}
}
json=json.concat(“]”);
我想反转迭代的顺序
有可能吗?您无法使用,但您可以将其添加到列表中,并使用以下简单方法进行迭代:
List<String> l = new ArrayList<String>(jsonHashTableTemp.keySet());
for (int i = l.size()-1; i >= 0; i--) {
jsonHashTableTemp.get(l.get(i));
}
listl=newarraylist(jsonHashTableTemp.keySet());
对于(int i=l.size()-1;i>=0;i--){
jsonHashTableTemp.get(l.get(i));
}
如果您使用的是某种有序散列,如前面所述的LinkedHashMap
,那么这就很有意义了
编辑:更正了
l.get(i)
内部循环如果使用哈希表或哈希映射,则根本不保证顺序。每跑一次可能会有所不同。
如果要分别按插入顺序或自然顺序进行迭代,则应使用或。
只有这样,您才能使用已经建议的方法将keySet()复制到ArrayList中并向后迭代
注意:应该使用而不是串联字符串。否则,您将看到大型数据集的性能受到影响
StringBuilder jsonSB = new StringBuilder();
jsonSB.append("[");
List<String> l = new ArrayList<String>(jsonHashTableTemp.keySet());
for (int i = l.size() - 1; i >= 0; i--) {
jsonSB.append(jsonHashTableTemp.get(l.get(i)));
jsonSB.append(", ");
}
jsonSB.append("]");
String json = jsonSB.toString();
StringBuilder jsonSB=new StringBuilder();
jsonSB.append(“[”);
List l=新的ArrayList(jsonHashTableTemp.keySet());
对于(int i=l.size()-1;i>=0;i--){
append(jsonHashTableTemp.get(l.get(i));
jsonSB.append(“,”);
}
jsonSB.append(“]”);
字符串json=jsonSB.toString();
您也可以使用“Collections.reverse()”函数进行反转。
以身作则,
List List=newarraylist(jsonHashTableTemp.keySet());
收款。反向(列表);
for(字符串值:列表){
jsonHashTableTemp.get(值);
}
除非您使用的是LinkedHashMap
,否则您首先无法获得可预测的迭代顺序,因此反转它对您没有多大好处。请将密钥集放入新的ArrayList中,然后反向迭代。
List<String> list = new ArrayList<String>(jsonHashTableTemp.keySet());
Collections.reverse(list);
for (String value : list) {
jsonHashTableTemp.get(value);
}