hashmap—在java中获取Map的前5个元素

mkh04yzy  于 2021-07-11  发布在  Java
关注(0)|答案(2)|浏览(1217)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

上个月关门了。
改进这个问题
我正在为大学做一个java项目。我需要在一个字符串列表中添加一个Map的前5个值,但是我似乎找不到一种方法来迭代5个元素,而不是像使用迭代器那样迭代所有元素
基本上我有一个Map声明如下: 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)
}

有人能帮我吗?

krugob8w

krugob8w1#

HashMap 对于这个要求是错误的类。因为 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
v8wbuo2f

v8wbuo2f2#

不能直接在Map上使用索引(i=0..4),因为Map通常是无序的。套路也一样。所以你所能做的就是开始处理Map,得到你得到的任何东西,然后在你得到5个东西后停止:

int count = 0;
for (String key : infl_numbers.keySet()) {
    list.add(infl_numbers.get(key))
    count++;
    if (count == 5)
        break;
}

有一些类型的Map是有序的。因此,如果你有一个对其中一个的引用,而不仅仅是一个对Map的引用,那么故事就不同了,这取决于你所处理的Map的子类型。

相关问题