java Collectors都有哪些实用函数
在Java中,Collectors
类提供了许多用于收集流元素的静态方法。下面是一些常用的Collectors
方法:
toList()
:将流元素收集到List中。
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class ToListCollectorExample {
public static void main(String[] args) {
List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");
List<String> collectedList = words.stream()
.collect(Collectors.toList());
System.out.println(collectedList);
}
}
输出结果:
[apple, banana, cherry, date, elderberry]
toSet()
:将流元素收集到Set中。
import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;
public class ToSetCollectorExample {
public static void main(String[] args) {
List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");
Set<String> collectedSet = words.stream()
.collect(Collectors.toSet());
System.out.println(collectedSet);
}
}
输出结果:
[banana, elderberry, cherry, apple, date]
toMap()
:将流元素收集到Map中。
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class ToMapCollectorExample {
public static void main(String[] args) {
List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");
Map<String, Integer> wordLengthMap = words.stream()
.collect(Collectors.toMap(word -> word, String::length));
System.out.println(wordLengthMap);
}
}
输出结果:
{apple=5, banana=6, cherry=6, date=4, elderberry=10}
joining()
:将流元素连接成一个字符串。
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class JoiningCollectorExample {
public static void main(String[] args) {
List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");
String joinedString = words.stream()
.collect(Collectors.joining(", "));
System.out.println(joinedString);
}
}
输出结果:
apple, banana, cherry, date, elderberry
groupingBy()
:根据指定的分类函数将流元素分组。
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class GroupingByCollectorExample {
public static void main(String[] args) {
List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");
Map<Integer, List<String>> wordLengthMap = words.stream()
.collect(Collectors.groupingBy(String::length));
System.out.println(wordLengthMap);
}
}
输出结果:
{4=[date], 5=[apple], 6=[cherry, banana], 10=[elderberry]}
partitioningBy()
:根据指定的条件将流元素分为两组。
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class PartitioningByCollectorExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Map<Boolean, List<Integer>> evenOddMap = numbers.stream()
.collect(Collectors.partitioningBy(number -> number % 2 == 0));
System.out.println(evenOddMap);
}
}
输出结果:
{false=[1, 3, 5], true=[2, 4]}
mapping()
:对流元素进行映射后收集。
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class MappingCollectorExample {
public static void main(String[] args) {
List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");
List<Integer> wordLengths = words.stream()
.collect(Collectors.mapping(String::length, Collectors.toList()));
System.out.println(wordLengths);
}
}
输出结果:
[5, 6, 6, 4, 10]
joining()
函数的示例代码:import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Example { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eva"); // 使用joining函数将名字连接成一个字符串 String result = names.stream() .collect(Collectors.joining()); System.out.println(result); } }
运行这段代码,输出结果为:
AliceBobCharlieDavidEva
在这个示例中,我们使用
joining()
函数将名字连接成一个字符串。由于没有指定分隔符、前缀和后缀,所以名字直接连接在一起。带有分隔符、前缀和后缀的
joining(delimiter, prefix, suffix)
函数的示例代码:import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Example { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eva"); // 使用joining函数将名字连接成一个字符串,使用逗号作为分隔符,并在开头和结尾添加方括号 String result = names.stream() .collect(Collectors.joining(", ", "[", "]")); System.out.println(result); } }
运行这段代码,输出结果为:
[Alice, Bob, Charlie, David, Eva]
在这个示例中,我们使用
joining(delimiter, prefix, suffix)
函数将名字连接成一个字符串,使用逗号作为分隔符,并在开头和结尾添加方括号。这样,我们得到了一个格式化的名字列表字符串。