java - 一次迭代 4 个 HashMap 的键、值

标签 java hashmap iterator

我有一个 HashMap 。

public HashMap<String, Integer> lines = new HashMap<String, Integer>();

我想返回前 4 个键,然后是前 4 个值,然后重复直到什么都没有。

如何最好地做到这一点?

我整个上午都在尝试 :)

最佳答案

如果您可以设法将所有键作为列表获取,那么您可以一次迭代它们 4 个,因为这样您就可以通过索引位置获取它们,就像这样

//get all keys as list
List<String> list = new ArrayList<String>(lines.keySet());

//one iteration of this loop deals with 4 keys and 4 values.
for(i=0; i<n; i=i+4) {
    k1 = list.get(i);
    v1 = lines.get(k1);

    k2 = list.get(i+1);
    v2 = lines.get(k2);

    k3 = list.get(i+2);
    v3 = lines.get(k3);

    k4 = list.get(i+3);
    v4 = lines.get(k4);
}

编辑

如果元素个数不是4的倍数,那么你可以这样做:

//get all keys as list
List<String> list = new ArrayList<String>(lines.keySet());

//one iteration of this loop deals with 4 keys and 4 values.
int mod = n%4;
for(i=0; i<n-mod; i=i+4) {
    k1 = list.get(i);
    v1 = lines.get(k1);

    k2 = list.get(i+1);
    v2 = lines.get(k2);

    k3 = list.get(i+2);
    v3 = lines.get(k3);

    k4 = list.get(i+3);
    v4 = lines.get(k4);
}

//deal with last 1, 2 or 3 elements separately.
if(mod>=1) {
    k1 = list.get(i);
    v1 = lines.get(k1);

    if(mod>=2) {
        k2 = list.get(i+1);
        v2 = lines.get(k2);

        if(mod>=3) {
            k3 = list.get(i+2);
            v3 = lines.get(k3);
        }
    }
}

关于java - 一次迭代 4 个 HashMap 的键、值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42647298/

相关文章:

Java、HashMaps 和使用字符串作为键 - 字符串值是否存储了两次?

algorithm - 统一文件访问

c++ - 调用 `list<T>::end()` 不是很低效吗?

java - Java中的simpleJson解析

java - IntelliJ 中是否存在类似 ASTNode Identifier 的东西

java - 计算 2D 数组输出的频率并将其分配给 1D 数组

java - Selenium Hashmap(String, WebElement) 传递 String 时不返回 WebElement

java - 如何使用 Jackson 将 JSON 对象转换为 Java HashMap?

java - 我可以得到 Spring 的 <context :property-placeholder/> to tell me what classpaths it's looking in?

memory - 在 Rust 中的 mem::replace