java8 list分割为多个list
时间: 2023-03-28 13:02:37 浏览: 239
可以使用Java 8的Stream API中的collect方法和Collectors工具类来实现将一个List分割为多个List。具体实现可以参考以下代码:
```
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int size = 3;
List<List<Integer>> result = list.stream()
.collect(Collectors.groupingBy(it -> (list.indexOf(it) / size)))
.values().stream()
.collect(Collectors.toList());
System.out.println(result);
```
其中,size表示每个子List的大小,list表示要分割的原始List。运行结果为:
```
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
```
即将原始List分割为了4个子List,每个子List的大小为3(最后一个子List的大小为1)。
相关问题
java8分割list
Java 8提供了一些新的分割List的方法。在Java 8中,我们可以使用Stream API和Lambda表达式来实现分割List的操作。
首先,我们可以使用Stream API的新方法partitioningBy()来将List根据某个条件分成两个子集,这两个子集都是List类型。例如,我们可以通过以下代码将一个包含所有整数的List分为两个子集,其中一个子集包含所有偶数,另一个子集包含所有奇数:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Map<Boolean, List<Integer>> partionedNumbers = numbers.stream()
.collect(Collectors.partitioningBy(n -> n % 2 == 0));
List<Integer> evenNumbers = partionedNumbers.get(true);
List<Integer> oddNumbers = partionedNumbers.get(false);
其次,我们还可以使用Stream API的新方法groupingBy()来将List根据某个条件分成多个子集,每个子集都是List类型。例如,我们可以通过以下代码将一个包含若干个字符串的List根据它们的长度分为多个子集:
List<String> words = Arrays.asList("apple", "banana", "pear", "peach", "grape", "watermelon");
Map<Integer, List<String>> groupedWords = words.stream()
.collect(Collectors.groupingBy(String::length));
List<String> threeLetterWords = groupedWords.get(3);
List<String> fourLetterWords = groupedWords.get(4);
List<String> fiveLetterWords = groupedWords.get(5);
使用以上两种方法,我们可以非常便捷地对List进行分割操作,从而实现更高效、更灵活的数据处理和分析。
java list分割
Java中可以使用ListUtil或者Guava库中的Lists.partition方法来对List进行分割。这两种方法都可以将一个List分割为多个子List,并指定每个子List的大小。
使用ListUtil的splitList方法示例:
```java
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
list.add("f");
list.add("g");
List<List<String>> slist = ListUtil.splitList(list, 3);
System.out.println(slist);
```
使用Guava库中的Lists.partition方法示例:
```java
List<Integer> integers = new ArrayList<>();
for (int i = 0; i < 19; i++) {
integers.add(i);
}
List<List<Integer>> partition = Lists.partition(integers, 4);
partition.forEach(list -> {
System.out.println(list.toString() + " 数量:" + list.size());
});
```
在对源List进行业务操作后,再次对分割后的子List进行操作时,结果会反映出源List的变化。在上述代码中,我们向integers添加了三个新元素(18、19、20),然后输出了分割后的partition结果,并观察到新元素已经反映在分割后的子List中。
阅读全文