我正在尝试实现此方法:
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循环嵌套在里面,但我不知道如何实现它。
如何实施此方法?
答案 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>>
,这也应该是结果的类型。