Java:如何根据长度或值的总和向列表中添加列表?

Java:如何根据长度或值的总和向列表中添加列表?,java,java-8,Java,Java 8,我需要创建一个列表列表,其中每个列表的长度为5或列表中的值之和一个简单得多的解决方案就是保持所添加元素的运行总数: int i = 0; while (i < keyListMax.size()) { int start = i; int sum = 0; do { sum += keyListMax.get(i); ++i; } while (i < keyListMax.size() && i < start +

我需要创建一个列表列表,其中每个列表的长度为5或列表中的值之和一个简单得多的解决方案就是保持所添加元素的运行总数:

int i = 0;
while (i < keyListMax.size()) {
  int start = i;
  int sum = 0;
  do {
    sum += keyListMax.get(i);
    ++i;
  } while (i < keyListMax.size()
      && i < start + 5
      && sum + keyListMax.get(i) <= 10);
  result.add(0, new ArrayList<>(keyListMax.subList(start, i)));
}
inti=0;
而(i&&sum+keyListMax.get(i)看起来你只是一次又一次地将
currentList
添加到
result
中。如果你想要一个不同的列表,你必须使用
new
并创建一个。是的,你回答了,你正在清除列表。在计算列表所需的金额之前,你还应该将
s
添加到
currentList
相反的顺序,即使用
result.add(0,currentList)
而不是
result.add(currentList)
?根据列表类型,这可能会非常低效。此外,没有理由使用
布尔值
,而不是
布尔值
,但是
大小到达的
长度到达的
可能属于
布尔值
,因为这些变量必须与
大小
长度
不同。谢谢您需要一个更简单的解决方案。使用此解决方案,最后一项始终作为单个列表添加,尽管大小或长度限制尚未满足。例如。[1,2,3,4,5,0],结果将为[[0],[5],[1,2,3,4]]@NoName好的,试着想想如何避免添加它。顺便说一句,您可以通过使用
do…while
循环摆脱
start==i
条件。
int i = 0;
while (i < keyListMax.size()) {
  int start = i;
  int sum = 0;
  do {
    sum += keyListMax.get(i);
    ++i;
  } while (i < keyListMax.size()
      && i < start + 5
      && sum + keyListMax.get(i) <= 10);
  result.add(0, new ArrayList<>(keyListMax.subList(start, i)));
}