目录
- 筛选
- 循环
- 聚合函数
- count
- Map
筛选
需求:
- 筛选出年龄大于20的人
实体类 User.java
package com.example.demo;
public class User {
private String name;
private Integer age;
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
使用for循环
package com.example.demo;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
userList.add(new User("刘备", 40));
userList.add(new User("关羽", 30));
userList.add(new User("张飞", 20));
// 筛选出年龄大于20的人
List<User> newUserList = new ArrayList<>();
for (User user : userList) {
if (user.getAge() > 20) {
newUserList.add(user);
}
}
System.out.println(newUserList);
// [User{name='刘备', age=40}, User{name='关羽', age=30}]
}
}
使用Stream
package com.example.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Demo {
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
userList.add(new User("刘备", 40));
userList.add(new User("关羽", 30));
userList.add(new User("张飞", 20));
// 筛选出年龄大于20的人
List<User> newUserList = userList
.stream()
.filter(u -> u.getAge() > 20)
.collect(Collectors.toList());
System.out.println(newUserList);
// [User{name='刘备', age=40}, User{name='关羽', age=30}]
}
}
循环
JDK7
package com.example.demo;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
userList.add(new User("刘备", 40));
userList.add(new User("关羽", 30));
userList.add(new User("张飞", 20));
for (User user : userList) {
System.out.println(user);
}
// User{name='刘备', age=40}
// User{name='关羽', age=30}
// User{name='张飞', age=20}
}
}
JDK8
package com.example.demo;
import java.util.ArrayList;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
userList.add(new User("刘备", 40));
userList.add(new User("关羽", 30));
userList.add(new User("张飞", 20));
userList.stream().forEach(u -> {
System.out.println(u);
});
// 或者
// userList.forEach(u -> {
// System.out.println(u);
// });
// User{name='刘备', age=40}
// User{name='关羽', age=30}
// User{name='张飞', age=20}
}
}
聚合函数
需求:
- 获取List 中字符串最长的那个
JDK7
package com.example.demo;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Demo {
public static void main(String[] args) {
String[] strArr = new String[]{"a", "bb", "ccc"};
List<String> list = Arrays.asList(strArr);
String max = Collections.max(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1.length() < o2.length()) {
return -1;
} else if (o1.length() > o2.length()) {
return 1;
} else {
return o1.compareTo(o2);
}
}
});
System.out.println(max);
// ccc
}
}
JDK8
package com.example.demo;
import java.util.*;
public class Demo {
public static void main(String[] args) {
String[] strArr = new String[]{"a", "bb", "ccc"};
List<String> list = Arrays.asList(strArr);
Optional<String> max = list.stream()
.max(Comparator.comparing(String::length));
System.out.println(max.get());
// ccc
}
}
count
package com.example.demo;
import java.util.*;
public class Demo {
public static void main(String[] args) {
// 获取List中大于2的元素的个数
List<Integer> list = Arrays.asList(1, 2, 3);
long count = list.stream()
.filter(x -> x > 2)
.count();
System.out.println(count);
// 1
}
}
Map
需求:
- 获取List中的name 数据
JDK7
package com.example.demo;
import java.util.*;
public class Demo {
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
userList.add(new User("刘备", 40));
userList.add(new User("关羽", 30));
userList.add(new User("张飞", 20));
List<String> names = new ArrayList<>();
for (User user : userList) {
names.add(user.getName());
}
System.out.println(names);
// [刘备, 关羽, 张飞]
}
}
JDK8
package com.example.demo;
import java.util.*;
import java.util.stream.Collectors;
public class Demo {
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
userList.add(new User("刘备", 40));
userList.add(new User("关羽", 30));
userList.add(new User("张飞", 20));
List<String> names = userList.stream()
.map(User::getName)
.collect(Collectors.toList());
System.out.println(names);
// [刘备, 关羽, 张飞]
}
}