在 Java 中获取 Map 的前 5 个元素
Get the first 5 elements of a Map in Java
我正在为大学做一个 Java 项目。我需要在 String 列表中添加 Map 的前 5 个值,但我似乎无法找到一种方法来迭代仅 5 个元素而不是所有元素,例如使用 Iterator
基本上我有一个地图声明如下:Map<String, Integer> infl_numbers = new HashMap<>();
我想做这样的事情:
for (short i =0;i<5;i++){
// element = get i-th element of the Map
// list.add(element)
}
谁能帮帮我?
您不能直接在地图上对索引 (i = 0..4) 执行任何操作,因为地图通常是无序的。与集合相同。所以你所能做的就是开始处理地图,得到你得到的任何项目,然后在你得到 5 个项目后停止:
int count = 0;
for (String key : infl_numbers.keySet()) {
list.add(infl_numbers.get(key))
count++;
if (count == 5)
break;
}
有些类型的地图需要订购。因此,如果您有对其中之一的引用而不仅仅是对 Map 的引用,情况就不同了,并且取决于您正在处理的 Map 的子类型。
HashMap
是这个要求的错误class。由于 HashMap
中的元素没有排序,您每次可能会得到一组不同的五个元素。您应该使用 LinkedHashMap
来维护插入顺序。然后,您可以迭代键集并在计数器的帮助下获得前五个元素,例如
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new LinkedHashMap<>();
map.put("One", 1);
map.put("Two", 2);
map.put("Three", 3);
map.put("Four", 4);
map.put("Five", 5);
map.put("Six", 6);
map.put("Seven", 7);
map.put("Eight", 8);
map.put("Nine", 9);
map.put("Ten", 10);
// Access first five elements
int count = 0;
Iterator<String> itr = map.keySet().iterator();
while (itr.hasNext() && count < 5) {
System.out.println(map.get(itr.next()));
count++;
}
}
}
输出:
1
2
3
4
5
我正在为大学做一个 Java 项目。我需要在 String 列表中添加 Map 的前 5 个值,但我似乎无法找到一种方法来迭代仅 5 个元素而不是所有元素,例如使用 Iterator
基本上我有一个地图声明如下:Map<String, Integer> infl_numbers = new HashMap<>();
我想做这样的事情:
for (short i =0;i<5;i++){
// element = get i-th element of the Map
// list.add(element)
}
谁能帮帮我?
您不能直接在地图上对索引 (i = 0..4) 执行任何操作,因为地图通常是无序的。与集合相同。所以你所能做的就是开始处理地图,得到你得到的任何项目,然后在你得到 5 个项目后停止:
int count = 0;
for (String key : infl_numbers.keySet()) {
list.add(infl_numbers.get(key))
count++;
if (count == 5)
break;
}
有些类型的地图需要订购。因此,如果您有对其中之一的引用而不仅仅是对 Map 的引用,情况就不同了,并且取决于您正在处理的 Map 的子类型。
HashMap
是这个要求的错误class。由于 HashMap
中的元素没有排序,您每次可能会得到一组不同的五个元素。您应该使用 LinkedHashMap
来维护插入顺序。然后,您可以迭代键集并在计数器的帮助下获得前五个元素,例如
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new LinkedHashMap<>();
map.put("One", 1);
map.put("Two", 2);
map.put("Three", 3);
map.put("Four", 4);
map.put("Five", 5);
map.put("Six", 6);
map.put("Seven", 7);
map.put("Eight", 8);
map.put("Nine", 9);
map.put("Ten", 10);
// Access first five elements
int count = 0;
Iterator<String> itr = map.keySet().iterator();
while (itr.hasNext() && count < 5) {
System.out.println(map.get(itr.next()));
count++;
}
}
}
输出:
1
2
3
4
5