使用循环将元素添加到具有不同名称的数组

时间:2014-07-20 01:47:50

标签: java arrays loops hashmap

我有以下ArrayLists。

ArrayList<HashMap<Integer, Integer>> RP1 = new ArrayList<HashMap<Integer, Integer>>();
ArrayList<HashMap<Integer, Integer>> RP2 = new ArrayList<HashMap<Integer, Integer>();

我想在循环中为每个ArrayList添加一个HashMap。目前我正在添加它们:

RP1.add(new HashMap<Integer, Integer>());
RP1.add(new HashMap<Integer, Integer>());
RP2.add(new HashMap<Integer, Integer>());
RP2.add(new HashMap<Integer, Integer>());

有没有办法用for循环执行此操作?我目前的方法似乎效率低下。

2 个答案:

答案 0 :(得分:0)

就效率而言,像你发布的展开循环将比任何循环结构更快。如果您对简洁性感兴趣并且有两个以上的变量,则可以考虑声明ArrayList List<Map<Integer, Integer>>而不是单独的变量。我还建议您program to an interface(将所有变量声明为接口类型[例如,List]而不是实现类型[ArrayList]):

List<List<Map<Integer, Integer>>> RPs = new ArrayList<>();

for (int i = 0; i < NUMBER_OF_ARRAYLISTS; i++) {
    List<Map<Integer, Integer>> list = new ArrayList<>();
    for (int j = 0; j < NUMBER_OF_MAPS_PER_LIST; j++) {
        list.add(new HashMap<Integer, Integer>());
    }
    RPs.add(list);
}

如果您确实需要按名称访问每个List<Map<Integer, Integer>>,但仍希望消除各个变量,则将外部结构声明为Map<String, List<Map<Integer, Integer>>并按名称添加元素。但这些都不会让事情变得更有效率,只是(也许)更容易编程。

答案 1 :(得分:0)

尝试这样的事情。没有测试它。

example(RP1,RP2); 
/* or example(RP1,RP1,RP2,RP2) */


public static void example(ArrayList<HashMap<Integer, Integer>> ... arrays){

      for (int i = 0; i < arrays.length; i++)
           arrays[i].add(new HashMap<Integer, Integer>());
}

更多信息:https://today.java.net/article/2004/04/13/java-tech-using-variable-arguments