对Collection分段 比如Lists.partition
时间: 2023-06-08 08:05:42 浏览: 162
可以使用Java中的Collections类的静态方法partition来对一个集合进行分段。该方法需要传入需要进行分段的集合,以及每个分段的大小。具体使用方法如下:
```
List<String> list = Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H", "I");
List<List<String>> partitions = Lists.partition(list, 3);
```
在上面的代码中,我们定义了一个包含了九个元素的String类型List集合,并且将其按照指定大小(在本例中为3)进行分段。最终,我们将得到一个List类型的集合,其中每一个元素都是一个包含特定数量元素的List集合。在本例中,partitions将包含三个List集合,它们分别为["A", "B", "C"], ["D", "E", "F"], 和 ["G", "H", "I"]。
需要注意的是,在使用上述代码之前,我们需要先导入com.google.common.collect.Lists以及java.util.Arrays和java.util.List这三个包。
相关问题
Lists.partition 使用
Lists.partition 是 Google Guava 库中提供的一个方法,用于将一个 List 集合分割成多个指定大小的小集合。使用该方法可以方便地将一个大的集合分割成多个小集合,以便于进行批量操作。
下面是使用 Lists.partition 方法的示例代码:
```java
import com.google.common.collect.Lists;
import java.util.List;
public class PartitionExample {
public static void main(String[] args) {
List<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<List<Integer>> partitions = Lists.partition(list, 3);
for (List<Integer> partition : partitions) {
System.out.println(partition);
}
}
}
```
输出结果为:
```
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[10]
```
上述代码中,我们首先创建了一个包含 10 个元素的 List 集合,然后使用 Lists.partition 方法将该集合分割成每个小集合包含 3 个元素的若干个小集合。最后,我们遍历每个小集合并输出其内容。
Lists.partition list更换成Collection 如何改造对应的方法
您可以使用Java 8中引入的Stream API中的partitioningBy()方法来将列表分区为两个集合。该方法需要一个Predicate参数来分区元素,并返回一个Map<Boolean, List<T>>对象,其中Boolean键表示元素是否满足分区条件,List<T>表示满足或不满足条件的元素列表。下面是示例代码:
import java.util.stream.Collectors;
import java.util.List;
import java.util.Map;
import java.util.Collection;
public class MyClass {
public static <T> Map<Boolean, Collection<T>> partition(Collection<T> inputCollection, Predicate<? super T> condition) {
return inputCollection.stream().collect(Collectors.partitioningBy(condition));
}
}
在这个方法中,参数inputCollection是要分区的集合,参数condition是分区的条件,返回一个Map<Boolean, Collection<T>>对象,其中Boolean键表示元素是否满足分区条件,Collection<T>表示满足或不满足条件的元素集合。
您可以使用以下代码调用此方法:
List<String> inputList = Arrays.asList("foo", "bar", "baz", "qux");
Predicate<String> condition = str -> str.startsWith("b");
Map<Boolean, Collection<String>> result = partition(inputList, condition);
在这个例子中,输入列表包含四个字符串元素。我们首先定义一个Predicate对象,该对象返回true如果字符串以“b”开头。我们然后调用partition()方法将输入列表分区为两个集合,其中一个集合包含以“b”开头的字符串,另一个集合包含其他字符串。最终,我们将返回的Map对象存储在result变量中。
阅读全文