java 怎么将list 均分成多个
时间: 2023-03-25 12:02:40 浏览: 130
可以使用Java8的Stream API来实现将List均分成多个子List的操作。具体实现代码如下:
```java
public static <T> List<List<T>> splitList(List<T> list, int size) {
return IntStream.range(, (list.size() + size - 1) / size)
.mapToObj(i -> list.subList(i * size, Math.min((i + 1) * size, list.size())))
.collect(Collectors.toList());
}
```
其中,list参数为需要分割的List,size参数为每个子List的大小。该方法返回一个List,其中包含了均分后的多个子List。
相关问题
java把list分成多个list
在Java中实现将一个List分成多个List的过程,可以采用以下的方法:
1.使用subList()方法:
Java List接口中的subList()方法可以实现将一个List分成多个List的效果。具体实现步骤为先计算出要分成的List的个数,然后把原List按照指定的块数分成多个子List,最后把每个子List都添加到一个大的List中。
public List<List<T>> splitList(List<T> list, int blockSize) {
int size = list.size();
int block = size / blockSize;
if (size % blockSize > 0) {
block++;
}
List<List<T>> lists = new ArrayList<List<T>>(block);
for (int i = 0; i < block; i++) {
int fromIndex = i * blockSize;
int toIndex = (i + 1) * blockSize;
if (toIndex > size) {
toIndex = size;
}
List<T> sublist = list.subList(fromIndex, toIndex);
lists.add(sublist);
}
return lists;
}
2.自定义分割方法:
我们也可以自定义实现List分割的方法。这种方法的主要思想是通过循环把原List中的元素逐一添加到一个新的ArrayList中,直到达到指定的分割条件为止。
public List<List<T>> splitList(List<T> list, int chunkSize) {
List<List<T>> chunks = new ArrayList<List<T>>();
for (int i = 0; i < list.size(); i += chunkSize) {
int end = i + chunkSize;
if (end > list.size()) {
end = list.size();
}
chunks.add(list.subList(i, end));
}
return chunks;
}
总之,Java中实现将一个List分成多个List的方法有很多,以上只是其中较为常用的两种方法。在实际应用中,我们可以根据具体需求选择合适的方法。
java根据条件一个list分成多个list
可以使用Java 8的流式操作来实现将一个List按照某个条件分成多个List的操作。具体步骤如下:
1. 使用stream()方法将List转换成一个流
2. 使用collect()方法将流转换成一个Map,其中key为分组的条件,value为对应的List
3. 对于每个元素,根据条件将其加入对应的List中
示例代码如下:
```java
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class ListSplitter {
public static void main(String[] args) {
List<Person> persons = List.of(
new Person("Tom", 20),
new Person("Lucy", 18),
new Person("John", 22),
new Person("Mary", 19),
new Person("David", 22)
);
Map<Integer, List<Person>> groups = persons.stream()
.collect(Collectors.groupingBy(Person::getAge));
System.out.println(groups);
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
```
输出结果为:
```
{19=[Person{name='Mary', age=19}], 20=[Person{name='Tom', age=20}], 22=[Person{name='John', age=22}, Person{name='David', age=22}], 18=[Person{name='Lucy', age=18}]}
```
可以看到,根据年龄将Person对象分成了不同的List,其中19岁的有一个,20岁的有一个,22岁的有两个,18岁的有一个。
阅读全文