私はList<Object>
に100個のオブジェクトを持っているとしましょう。どのような最善の方法をJava 8(任意のライブラリを使用せず)を含むList<List<Object>>
を取得するには?リストのリストにリスト
答えて
それはあなたがIntStreamとインデックスtakeWhileを使用して、これらの指標を使用してからサブリストを取る生成できるJava 9で
@Test
public void givenList_whenParitioningIntoNSublists_thenCorrect() {
List<Integer> intList = Lists.newArrayList(1, 2, 3, 4, 5, 6, 7, 8);
List<List<Integer>> subSets = Lists.partition(intList, 3);
List<Integer> lastPartition = subSets.get(2);
List<Integer> expectedLastPartition = Lists.<Integer> newArrayList(7, 8);
assertThat(subSets.size(), equalTo(3));
assertThat(lastPartition, equalTo(expectedLastPartition));
}
外部final
カウンタが必要ですが、これは動作するようです。
// Must be final (or implicitly final).
AtomicInteger n = new AtomicInteger();
Map<String, List<Integer>> groups = IntStream.range(0, 100)
.boxed()
.collect(Collectors.groupingBy(
// Group by n/10.
o -> String.valueOf(n.getAndIncrement()/10)
)
);
PrimitiveIterator.OfIntを使用すると、AtomicIntegerを回避できます。 – richardstartin
@richardstartin - ニース!ありがとう、私は 'PrimitiveIterator'を渡って来なかった。 – OldCurmudgeon
私が最初に(あなたのケースでは10個の要素、)チャックサイズを取り、その後、リストの上に行くと、そこからチャンクを取るためにsubList
を使用すると思います。例えば:
List<List<Object>> subLists = IntStream
.range(0, (int) Math.ceil((double) list.size()/subListSize))
.mapToObj(i -> new ArrayList<>
(list.subList(i * subListSize, (i + 1) * subListSize)))
.collect(Collectors.toList());
注: 鋳造double
と天井にはsubListSize
が正確list.size()
を分割しない場合には整数除算を回避するために、ダウンしています。
(あなたは私はとにかくこれを入れwithout any tierce library
を投稿あなたにmentionned)グアバを使用して、より簡単です元のリスト。これは、ためのオブジェクトのいずれかの一覧を動作するはず :
private static final int BATCH_SIZE = 10;
public void test(){
List<List<Object>> batchedLists = split(generateTestObjects());
}
public List<List<Object>> split(List<Object> objects) {
return IntStream.iterate(0, n -> n + BATCH_SIZE)
.takeWhile(n -> n < objects.size())
.map(t -> objects.subList(t, Math.min(t + BATCH_SIZE, objects.size()))
.collect(Collectors.toList());
}
public List<Object> generateTestObjects(){
return IntStream.range(0, 100)
.boxed()
.collect(Collectors.toList());
}
- 1. Python:リストにリスト
- 2. リスト内のリストのリスト
- 3. Javaリストのリストのリスト
- 4. リスト内のリストのリスト
- 5. リストのリストをノーマルリストのリスト
- 6. リストするリストのPythonリスト
- 7. リストのリストをリストのすべてのリストに追加する
- 8. リストのリストを新しいリストのリストに連結する
- 9. リストのリストPython
- 10. OCaml:リストのリスト
- 11. Pythonリスト:単一リストを2Dリストにコピー
- 12. リストビュー内のリストにリスト
- 13. リストのリストにあるフィルタデータテーブル
- 14. リストのリストのリストへのツリービューのデータバインド
- 15. Prologリストのリストへの述語のリスト
- 16. javaのリストのリスト
- 17. リストのリストのツリーパス
- 18. Linq:リストの長いリストへのリスト
- 19. Python。リストの理解。リストのリストなど
- 20. リストのリストのリストのリストを平滑化
- 21. リストのリストから
- 22. Django bulk_createリストのリスト
- 23. Vb.netリスト内のリスト
- 24. Haskellリスト内のリスト
- 25. C#リスト内のリスト
- 26. zope.schemaリスト - リストのリストを保存
- 27. リストのリストをPythonのリストの別のリストで分割するには?
- 28. 「リストにリストされたデータポイント」リストの大きなリストをデータフレームに変換する
- 29. は、次のように私はリストのリストのリストを持っているリスト
- 30. 数字リストによるリストのリストへの整数リストの並べ替え
@birryreeあなたが応答する前にポストを読むことができ、それは、Java 8を意味するものではありません言及からといって、それがJava8 – Moussi
@Moussiをmentionnedされました:非Java8特定の回答は適用されません。 – birryree
@birryreeは古典的なJavaを使ってすべてを行うことができますが、ポスターはjava8ソリューションを探しています。 – Moussi