Java 如何获取HashMap中的前两项<;字符串,整数>;?
我一直在尝试获取前两个对象的方法 我已经尝试过使用数组的转换, 也用于迭代器 每次我撞车Java 如何获取HashMap中的前两项<;字符串,整数>;?,java,Java,我一直在尝试获取前两个对象的方法 我已经尝试过使用数组的转换, 也用于迭代器 每次我撞车 String[] strArr = (String[])map.keySet().toArray(); //crash Integer[] integerArr = (Integer[])map.values().toArray(); String string1 = strArr[0]; int value1 = integerArr[0]; Stri
String[] strArr = (String[])map.keySet().toArray(); //crash
Integer[] integerArr = (Integer[])map.values().toArray();
String string1 = strArr[0];
int value1 = integerArr[0];
String string2 = strArr[1];
int value2 = integerArr[1];
首先,您应该意识到在
HashMap
中没有“前2个对象”,因为在HashMap
中没有顺序
在迭代HashMap
时,您可以获得恰好最先返回的任意两个条目:
String[] keys = new String[2];
Integer[] values = new Integer[2];
Iterator<Map.Entry<String,Integer>> iterator = map.entrySet().iterator();
for (int i = 0; i < 2 && iterator.hasNext(); i++) {
Map.Entry<String,Integer> entry = iterator.next();
keys[i] = entry.getKey();
values[i] = entry.getValue();
}
String[]keys=新字符串[2];
整数[]值=新整数[2];
迭代器迭代器=map.entrySet().Iterator();
对于(int i=0;i<2&&iterator.hasNext();i++){
Map.Entry=iterator.next();
keys[i]=entry.getKey();
values[i]=entry.getValue();
}
首先,您应该意识到在HashMap
中没有“前两个对象”,因为在HashMap
中没有排序
在迭代HashMap
时,您可以获得恰好最先返回的任意两个条目:
String[] keys = new String[2];
Integer[] values = new Integer[2];
Iterator<Map.Entry<String,Integer>> iterator = map.entrySet().iterator();
for (int i = 0; i < 2 && iterator.hasNext(); i++) {
Map.Entry<String,Integer> entry = iterator.next();
keys[i] = entry.getKey();
values[i] = entry.getValue();
}
String[]keys=新字符串[2];
整数[]值=新整数[2];
迭代器迭代器=map.entrySet().Iterator();
对于(int i=0;i<2&&iterator.hasNext();i++){
Map.Entry=iterator.next();
keys[i]=entry.getKey();
values[i]=entry.getValue();
}
HashMap中没有真正的排序概念。如果需要插入顺序,请使用LinkedHashMap;如果需要字典顺序,请使用树映射。但不管怎样,这里是你想要它的方式
String[]keys=新字符串[2];
整数[]整数=新整数[2];//int[]也可以工作
迭代器it=map.entrySet().Iterator();
对于(int i=0;i<2&&it.hasNext();i++){
Map.Entry e=it.next();
keys[i]=e.getKey();
ints[i]=e.getValue();
}
HashMap中没有真正的排序概念。如果需要插入顺序,请使用LinkedHashMap;如果需要字典顺序,请使用树映射。但不管怎样,这里是你想要它的方式
String[]keys=新字符串[2];
整数[]整数=新整数[2];//int[]也可以工作
迭代器it=map.entrySet().Iterator();
对于(int i=0;i<2&&it.hasNext();i++){
Map.Entry e=it.next();
keys[i]=e.getKey();
ints[i]=e.getValue();
}
尝试使用map.keySet().toArray(新字符串[0])
和map.values().toArray(新整数[0])代码>。但是您最好使用entrySet
并迭代前两项。还要记住,HashMap不是有序的,所以没有“2个优先”对象,您只会得到2个随机对象。您似乎对映射和顺序感到困惑。HashMap是一个查找表。不像你有XY问题。请显示完整的代码和您实际要完成的任务如果顺序很重要,您可能需要将HashMap
更改为.Ops!我的错误。忘了在那里输入“否”字。我将删除该评论,以防止进一步混淆。谢谢@Paul:)尝试使用map.keySet().toArray(新字符串[0])
和map.values().toArray(新整数[0])代码>。但是您最好使用entrySet
并迭代前两项。还要记住,HashMap不是有序的,所以没有“2个优先”对象,您只会得到2个随机对象。您似乎对映射和顺序感到困惑。HashMap是一个查找表。不像你有XY问题。请显示完整的代码和您实际要完成的任务如果顺序很重要,您可能需要将HashMap
更改为.Ops!我的错误。忘了在那里输入“否”字。我将删除该评论,以防止进一步混淆。谢谢@Paul:)