Home> Java> javaTutorial> body text

What are the common methods of Java8 Stream?

王林
Release: 2023-05-05 17:01:07
forward
1042 people have browsed it

1. Quickly create a List

For example, I have an entity class User, and User has an attribute Name

public class User { public User(String name, String age, int height) { this.name = name; this.age = age; this.height = height; } private String name; private String age; private int height; // setter、getter方法我就不写了 } // 创建三个user User user1 = new User("111", "18", 180); User user2 = new User("222", "18", 175); User user3 = new User("333", "19", 170);
Copy after login

Now I want to create 3 users and put them in the list:

(1), new a list, add

List userList = new ArrayList<>(); userList.add(user1); userList.add(user2); userList.add(user3);
Copy after login

one by one (2), Stream flow: create a dynamic list, you can add elements

// stream流,创建的是动态数组,可以添加元素 List userList = Stream.of(user1, user2, user3).collect(Collectors.toList());
Copy after login

(3), if you create a fixed length For lists, you can use Arrays.asList(…args) to directly return a list

The essence is to convert an array into a list. The size of the array is fixed, so elements cannot be added to this list.

If you call the add method to add a new element, an exception will be reported: java.lang.UnsupportedOperationException

When the element is fixed, you can use this;

// 本质是将一个数组转成list,数组的大小是固定的,所以此list不能添加元素 // 如果调用add方法增加新的元素,会报异常:java.lang.UnsupportedOperationException List s = Arrays.asList("1","2","3")
Copy after login

2. Get a certain column of the object :

Take the userList above as an example. I take out the name attributes of all users in the list and put them into a new list:

(1), traverse

// 遍历 List userNameList = new ArrayList<>(); for (User user : userList) { userNameList.add(user.getName()); }
Copy after login

(2) , Stream flow: map

// Stream流 List userNameList = userList.stream().map(User::getName).collect(Collectors.toList());
Copy after login

3. Filtering, or filtering out the target object based on a judgment condition

Also take the userList above, for example, I want to filter out the name in the userList is not empty user

(1), traverse and add if

List newUserList = new ArrayList<>(); // if判断 for (User user : userList) { if(user.getName() != null) { newUserList.add(user); } }
Copy after login

(2), Stream stream: filter

// 获取userName不为空的user的List List userList = userList.stream().filter(user-> user.getName() != null).collect(Collectors.toList());
Copy after login

4, group

User grouping according to age:

(1), traversal plus if

Map> map = new HashMap<>(); // if判断 for (User user : userList) { if (map.get(user.getAge()) == null) { map.put(user.getAge(), new ArrayList()); } map.get(user.getAge()).add(user); }
Copy after login

(2), Stream flow: groupingBy

Map> map =userList.stream().collect( Collectors.groupingBy(User::getAge, Collectors.toList()));
Copy after login

5, summation

(1), int, double, long:

The ordinary traversal method for summation is similar to the above, so I won’t give an example;

// int、double、long: double max = userList.stream().mapToDouble(User::getHeight).sum();
Copy after login

6. Map and List conversion

(1), list to map:

a, traversal:

Map userMap = new Map<>(); for (User user : userList) { userMap.put(user.getName(), user); }
Copy after login

b, stream:

Use Collectors’ toMap method to convert List, you will generally encounter two problems a question.

(1) Convert map, key duplication problem;

Using (key1, key2)->key2 expression in the code can solve this kind of problem. If there are duplicate keys, use key2 To overwrite the previous key1, it can also be defined as (key1, key2)->key1, retain key1, and adjust it according to your own business scenario.

(2) Null pointer exception, that is, the value converted to map is null. This can be filtered with filter;

Map userMap= userList.stream().collect(Collectors.toMap(User::getName, Function.identity(),(key1, key2)->key2));
Copy after login

(2), map to list:

a, traversal:

List userList = new List<>(); for (String userName : userMap.keySet()) { userList.add(userMap.get(userName)); }
Copy after login

b, stream:

List userList = userMap.entrySet().stream().map(e ->e.getValue()).collect(Collectors.toList());
Copy after login

7. Make judgments

(1), anyMatch():

If any element succeeds in the judgment conditions, true will be returned;

For example, in the userlList above, I think Determine whether there is a height > 175:

userList.stream().anyMatch(user -> user.getHeight() > 175);
Copy after login

(2), allMatch():

allMatch: Judgment of the elements in the condition, all of them are, return true;

For example, in the userlList above, I want to determine whether all height > 175:

userList.stream().allMatch(user -> user.getHeight() > 175);
Copy after login

(3), noneMatch():

Contrary to allMatch, all elements in the condition are judged. None, return true

userList.stream().noneMatch(user -> user.getHeight() > 175);
Copy after login

(4), get the target sum:

userList.stream().filter(user -> user.getHeight() > 175).count();
Copy after login

All print results:

System.out.println(userList. stream().anyMatch(user -> user.getHeight() > 175));
System.out.println(userList.stream().allMatch(user -> user.getHeight() > 175 ));
System.out.println(userList.stream().noneMatch(user -> user.getHeight() > 175));
System.out.println(userList.stream(). filter(user -> user.getHeight() > 175).count());

What are the common methods of Java8 Stream?

The above is the detailed content of What are the common methods of Java8 Stream?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!