如何将ArrayList分成组?

时间:2016-03-13 18:00:30

标签: java arraylist

我正在尝试实现此方法:

public ArrayList<ArrayList> groupWords(ArrayList<String> scrambledWords, int groupNumber);

该方法采用字符串的ArrayList和表示每个组中的字数作为参数的数字,然后根据groupNumber参数返回由包含单词组的ArrayLists组成的ArrayList。例如,有一个包含20个字符串的ArrayList,我想将该ArrayList分组为5个组,所以我调用这样的方法:

ArrayList<ArrayList> groupedWords = groupWords(ArrayList, 5);

我很确定我需要有一个for循环与另一个for循环嵌套在里面,但我不知道如何实现它。

如何实施此方法?

3 个答案:

答案 0 :(得分:3)

使用Guava

sb.setCharAt(0, ..)

答案 1 :(得分:2)

这样的事情应该有效:

ArrayList<ArrayList<String>> grouped = new ArrayList<>();
for(int i = 0; i < words.size(); i++) {
    int index = i/groupSize;
    if(grouped.size()-1 < index)
        grouped.add(new ArrayList<>());
    grouped.get(index).add(words.get(i));
}

我还没有测试过这段代码,但基本上我使用了整数除法总是四舍五入到下一个最低整数的事实。  示例:4/5 = 0.8并舍入为0.

答案 2 :(得分:0)

public ArrayList<ArrayList> groupWords(ArrayList<String> scrambledWords, int groupNumber){
            int arraySize = scrambledWords.size();
            int count = 0;
            ArrayList<ArrayList> result = new ArrayList<>();
            ArrayList<String> subResult = new ArrayList<>();
            for(int i = 0 ; i < arraySize; i++){
                    if(count == groupNumber){
                            count = 0;
                            result.add(subResult);
                            subResult = new ArrayList<>();
                    }
                    subResult.add(scrambledWords.get(i));
                    count++;
            }
            return result;
}

这是简单的Java Collections Soultion。

  

建议:作为返回类型,您应该使用ArrayList<ArrayList<String>>,这也应该是结果的类型。