【问题标题】:Iterate Java Map with index使用索引迭代 Java Map
【发布时间】:2014-12-04 18:07:47
【问题描述】:

如何迭代 Map 以将内容从某个索引写入另一个。

Map<String, Integer> map = new LinkedHashMap<>();
    BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));

            for (String string : map.keySet()) {

                    bufferedWriter.write(string + " " + map.get(string));
                    bufferedWriter.newLine();

            }
            bufferedWriter.close();

我有两个 int 值,from 和 to,我现在如何写例如从 10 到 100?有没有可能用索引迭代地图?

【问题讨论】:

    标签: java collections map io writer


    【解决方案1】:

    这有点老了,但是对于那些想要使用Map.forEach 的人来说可以达到这样的结果:

    AtomicInteger i = new AtomicInteger(0);
    map.forEach((k, v) -> {
       int index = i.getAndIncrement();
    });
    

    【讨论】:

      【解决方案2】:

      您可以在该循环中增加一个 int 变量:

      int i = - 1;
      for (String string : map.keySet()) {
          i++;
          if (i < 10) {
              // do something
          } else {
              // do something else
          }
          bufferedWriter.write(string + " " + map.get(string)); // otherwise...
          bufferedWriter.newLine();
      }
      

      【讨论】:

      • 我认为是时候开始缩进你的代码了。
      • @peterh 对此感到抱歉:)
      【解决方案3】:

      LinkedHashMap 保留插入条目的顺序。因此,您可以尝试使用索引创建键列表和循环:

      List<String> keyList = new ArrayList<String>(map.keySet());
      for(int i = fromIndex; i < toIndex; i++) {
          String key = keyList.get(i);
          String value = map.get(key);
          ...
      }
      

      另一种不创建列表的方法:

      int index = 0;
      for (String key : map.keySet()) {
          if (index++ < fromIndex || index++ > toIndex) {
              continue;
          }
          ...
      }
      

      【讨论】:

        【解决方案4】:

        还有一个简单的解决方案:

        int i = 0;
        int mapSize = map.size();
        
        for (Map.Entry<String, Integer> element : map.entrySet()) {
            String key = element.getKey();
            int value = element.getValue();
        
            ...
        
            i++;
        }
        

        您有键、值、索引和大小。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-05-03
          • 1970-01-01
          • 1970-01-01
          • 2014-01-23
          • 1970-01-01
          • 2014-11-10
          • 1970-01-01
          • 2019-12-12
          相关资源
          最近更新 更多