StreamAPI中常用的方法
filter()
lambda函数传入一个参数,返回符合条件的
public static void main(String[] args) {
List<String> strings = new ArrayList<String>() {
{
add("test1");
add("test2");
add("test3");
add("test4");
}
};
strings.stream()
.filter(s->s.charAt(0)=='t')
.forEach(s->System.out.print(s+" "));
}forEach()
不返回,直接消费,labmda函数传入一个参数,即流中的一个元素,见上例
limit(long maxSize)
返回一个指定大小的流(顺序)
public static void main(String[] args) {
List<String> strings = new ArrayList<String>() {
{
add("test1");
add("test2");
add("test3");
add("test4");
}
};
strings.stream()
.limit(3)
.forEach(s -> System.out.print(s + " "));
}max()
按指定方式比较的最大值
public static void main(String[] args) {
List<String> strings = new ArrayList<String>() {
{
add("test1");
add("test2");
add("test3");
add("test4");
}
};
String s = strings.stream()
.max((s1, s2) -> {
return s1.compareTo(s2);
}).get();
System.out.print(s);
}min()
与max()相似,见上例
sorted()
按指定方式排序
public static void main(String[] args) {
List<String> strings = new ArrayList<String>() {
{
add("test1");
add("test2");
add("test3");
add("test4");
}
};
strings.stream()
.sorted((s1, s2) -> {
return s1.compareTo(s2);
}).forEach(s -> System.out.print(s + " "));
}mapToInt()
将元素映射成一个整型
public static void main(String[] args) {
List<String> strings = new ArrayList<String>() {
{
add("test1");
add("test2");
add("test3");
add("test4");
}
};
strings.stream()
.mapToInt(s -> {
return s.charAt(4) - '0';
})
.forEach(i -> {
System.out.print(i + " ");
});
}toArray
将流转化为一个数组
public static void main(String[] args) {
List<String> strings = new ArrayList<String>() {
{
add("test1");
add("test2");
add("test3");
add("test4");
}
};
int[] a = strings.stream()
.mapToInt(s -> {
return s.charAt(4) - '0';
})
.toArray();
for (int i : a) {
System.out.print(i + " ");
}
}原文: https://tinuv.me/2019/03/21/stream-api.html