ArrayList をより小さなサブリストに分割する
Java では、ArrayList データ構造はオブジェクトのコレクションを効率的に格納する便利な方法を提供します。場合によっては、ArrayList を指定したサイズの複数の小さなサブリストに分割することが必要になることがあります。この記事では、これを効果的に実現する方法について説明します。
不変ビューに subList() を使用する
subList() メソッドを使用すると、ArrayList の一部のビューを作成できます。 。結果として得られるサブリストは不変です。つまり、変更できません。
List<Integer> numbers = new ArrayList<>(Arrays.asList(5, 3, 1, 2, 9, 5, 0, 7)); List<Integer> head = numbers.subList(0, 4); List<Integer> tail = numbers.subList(4, 8);
サブリストを作成した後、元の ArrayList に加えられた変更はサブリストに反映されます。逆に、サブリストを変更しても、元の ArrayList には影響しません。
可変サブリストの作成
可変サブリストが必要な場合は、subList() ビューから新しい ArrayList を作成します。
List<Integer> newHead = new ArrayList<>(head);
便利な分割のための分割関数
複数のサブリストが必要な状況では、次のようなユーティリティ関数の作成を検討してください:
static <T> List<List<T>> chopped(List<T> list, final int L) { List<List<T>> parts = new ArrayList<>(); int N = list.size(); for (int i = 0; i < N; i += L) { parts.add(new ArrayList<>(list.subList(i, Math.min(N, i + L)))); } return parts; }
この関数は ArrayList と必要なサブリストの長さをパラメータとして受け取り、サブリストのリストを返します。
使用例
List<Integer> numbers = Collections.unmodifiableList(Arrays.asList(5, 3, 1, 2, 9, 5, 0, 7)); List<List<Integer>> parts = chopped(numbers, 3); System.out.println(parts); // prints "[[5, 3, 1], [2, 9, 5], [0, 7]]"
結論
この記事で説明した subList() メソッドとユーティリティ関数を活用すると、ArrayList を複数の小さなサブリストに効果的に分割し、特定のプログラミング ニーズに合わせて調整できます。
以上がJavaでArrayListをより小さなサブリストに分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。