search
HomeJavajavaTutorialWhat are the common methods of Java8 Stream?

What are the common methods of Java8 Stream?

May 05, 2023 pm 05:01 PM
javastream

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);

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

(1), new a list, add

List<User> userList = new ArrayList<>();
userList.add(user1);
userList.add(user2);
userList.add(user3);

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

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

(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<String> s = Arrays.asList("1","2","3")

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<String> userNameList = new ArrayList<>();
for (User user : userList) {
    userNameList.add(user.getName());
}

(2) , Stream flow: map

// Stream流
List<String> userNameList = userList.stream().map(User::getName).collect(Collectors.toList());

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<User> newUserList = new ArrayList<>();
// if判断
for (User user : userList) {
    if(user.getName() != null) {
        newUserList.add(user); 
    }
}

(2), Stream stream: filter

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

4, group

User grouping according to age:

(1), traversal plus if

Map<String, List<User>> 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);
}

(2), Stream flow: groupingBy

Map<String, List<User>> map =userList.stream().collect( Collectors.groupingBy(User::getAge, Collectors.toList()));

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();

6. Map and List conversion

(1), list to map:

a, traversal:

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

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<String, User> userMap= userList.stream().collect(Collectors.toMap(User::getName, Function.identity(),(key1, key2)->key2));

(2), map to list:

a, traversal:

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

b, stream:

   List<User> userList = userMap.entrySet().stream().map(e ->e.getValue()).collect(Collectors.toList());

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);

(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);

(3), noneMatch():

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

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

(4), get the target sum:

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

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!

Statement
This article is reproduced at:亿速云. If there is any infringement, please contact admin@php.cn delete
How does the class loader subsystem in the JVM contribute to platform independence?How does the class loader subsystem in the JVM contribute to platform independence?Apr 23, 2025 am 12:14 AM

The class loader ensures the consistency and compatibility of Java programs on different platforms through unified class file format, dynamic loading, parent delegation model and platform-independent bytecode, and achieves platform independence.

Does the Java compiler produce platform-specific code? Explain.Does the Java compiler produce platform-specific code? Explain.Apr 23, 2025 am 12:09 AM

The code generated by the Java compiler is platform-independent, but the code that is ultimately executed is platform-specific. 1. Java source code is compiled into platform-independent bytecode. 2. The JVM converts bytecode into machine code for a specific platform, ensuring cross-platform operation but performance may be different.

How does the JVM handle multithreading on different operating systems?How does the JVM handle multithreading on different operating systems?Apr 23, 2025 am 12:07 AM

Multithreading is important in modern programming because it can improve program responsiveness and resource utilization and handle complex concurrent tasks. JVM ensures the consistency and efficiency of multithreads on different operating systems through thread mapping, scheduling mechanism and synchronization lock mechanism.

What does 'platform independence' mean in the context of Java?What does 'platform independence' mean in the context of Java?Apr 23, 2025 am 12:05 AM

Java's platform independence means that the code written can run on any platform with JVM installed without modification. 1) Java source code is compiled into bytecode, 2) Bytecode is interpreted and executed by the JVM, 3) The JVM provides memory management and garbage collection functions to ensure that the program runs on different operating systems.

Can Java applications still encounter platform-specific bugs or issues?Can Java applications still encounter platform-specific bugs or issues?Apr 23, 2025 am 12:03 AM

Javaapplicationscanindeedencounterplatform-specificissuesdespitetheJVM'sabstraction.Reasonsinclude:1)Nativecodeandlibraries,2)Operatingsystemdifferences,3)JVMimplementationvariations,and4)Hardwaredependencies.Tomitigatethese,developersshould:1)Conduc

How does cloud computing impact the importance of Java's platform independence?How does cloud computing impact the importance of Java's platform independence?Apr 22, 2025 pm 07:05 PM

Cloud computing significantly improves Java's platform independence. 1) Java code is compiled into bytecode and executed by the JVM on different operating systems to ensure cross-platform operation. 2) Use Docker and Kubernetes to deploy Java applications to improve portability and scalability.

What role has Java's platform independence played in its widespread adoption?What role has Java's platform independence played in its widespread adoption?Apr 22, 2025 pm 06:53 PM

Java'splatformindependenceallowsdeveloperstowritecodeonceandrunitonanydeviceorOSwithaJVM.Thisisachievedthroughcompilingtobytecode,whichtheJVMinterpretsorcompilesatruntime.ThisfeaturehassignificantlyboostedJava'sadoptionduetocross-platformdeployment,s

How do containerization technologies (like Docker) affect the importance of Java's platform independence?How do containerization technologies (like Docker) affect the importance of Java's platform independence?Apr 22, 2025 pm 06:49 PM

Containerization technologies such as Docker enhance rather than replace Java's platform independence. 1) Ensure consistency across environments, 2) Manage dependencies, including specific JVM versions, 3) Simplify the deployment process to make Java applications more adaptable and manageable.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.