머리말
일상적인 개발 작업에서 우리는 객체 컬렉션에서 객체의 속성 컬렉션을 얻는 등 List의 데이터를 처리하는 문제에 자주 직면합니다. 이전에 우리가 생각한 것은 각 요소를 탐색한 다음 이를 꺼내서 다른 컬렉션에 넣는 것이었습니다. 이는 더 번거롭습니다. Java 8 이후에는 컬렉션에서 스트림 작업을 수행할 수 있으므로 위의 처리가 더욱 간결해집니다.
Overview
Stream 스트리밍 처리에는 map() 메소드가 있습니다. 먼저 그 정의를 살펴보겠습니다. 이 메소드는 java.util.stream.Stream 클래스에 있습니다.
맵을 보면 알 수 있습니다. () 메소드는 함수 표현식 인터페이스 매개변수를 수신하고, 입력 매개변수는 T를 가지며, 스트림 스트림은 R 일반입니다. 주로 다음 사항에 유의해야 합니다.
입력 매개변수는 스트림의 요소입니다.
출력 매개변수는 스트림이고 스트림은 새 요소입니다. 원본 스트림에는 4개의 원형 패턴이 있습니다. map() 함수를 호출하면 4개의 다섯개 별 패턴이 됩니다. 원형 패턴과 여기의 다섯개 별 패턴은 일대일 대응입니다. 즉, 원래 스트림에 요소가 몇 개 있는지를 나타냅니다. 호출 map() 메서드 뒤에도 여전히 많은 요소가 있습니다. 변경되는 유일한 것은 스트림의 요소 유형입니다.
먼저 엔터티 클래스 Student.java를 생성합니다
@Data public class Student implements Serializable { /** * 姓名 */ private String name; /** * 班级 */ private String schoolClass; /** *语文成绩 */ private Integer chineseScore; /** * 数学成绩 */ private Integer mathScore; }
그런 다음 데이터를 초기화하는 클래스를 생성합니다.
public class DataFactory { public static List<Student> initData(){ List<Student> list= new ArrayList<>(); Student s1=new Student(); s1.setName("汤霖"); s1.setSchoolClass("小一班"); s1.setChineseScore(87); s1.setMathScore(95); list.add(s1); Student s2=new Student(); s2.setName("李牧唐"); s2.setSchoolClass("小二班"); s2.setChineseScore(98); s2.setMathScore(97); list.add(s2); Student s3=new Student(); s3.setName("顾北辰"); s3.setSchoolClass("二年级"); s3.setChineseScore(89); s3.setMathScore(94); list.add(s3); Student s4=new Student(); s4.setName("言言"); s4.setSchoolClass("小二班"); s4.setChineseScore(100); s4.setMathScore(90); list.add(s4); Student s5=new Student(); s5.setName("大运"); s5.setSchoolClass("小三班"); s5.setChineseScore(96); s5.setMathScore(100); list.add(s5); return list; } }모든 학생 이름을 알아냅니다
public static void main(String[] args) { DataFactory.initData().stream() .map(student -> student.getName()) .forEach(System.out::println); }
여기서는 map() 메소드가 사용됩니다 , 입력 매개변수는 Student이고, 출력 매개변수는 String을 제네릭 타입으로 한 스트림입니다. 마지막으로 forEach를 사용하여 출력한 결과를 보면 모든 학생의 이름이 출력된 것을 알 수 있습니다. 이러한 학생 이름을 목록에 추가하려면 어떻게 해야 합니까?
목록에 학생 이름을 넣어보세요public static void main(String[] args) { //将所有的学生姓名放到list中 List<String> studentNames = DataFactory.initData().stream() .map(student -> student.getName()) .collect(Collectors.toList()); for (String studentName : studentNames) { System.out.println(studentName); } }
마찬가지로 모든 수업을 찾아 전체 학생의 점수를 알아내면 위와 같이 출력된 학생 이름이나 수업에 중복된 데이터가 있는 것을 확인할 수 있습니다. 해결 방법. 우리는 데이터가 마지막에 List에 저장된다는 것을 알고 있습니다. 중복 문제를 해결하기 위해 데이터를 Set에 넣고 Set의 중복 제거 기능을 사용할 수 있습니다.
//将学生姓名放到Set中,可以实现去重功能 Set<String> studentNames = DataFactory.initData().stream() .map(student -> student.getName()) .collect(Collectors.toSet());결과는 더 이상 인쇄되지 않습니다. 관심이 있으시면 직접 시도해 볼 수 있습니다.
Tang Lin이라는 학생의 중국어 점수를 90으로 설정
이제 Tang Lin이라는 학생의 중국어 점수를90
으로 설정해야 합니다. 사용법 map() 함수는 어떻게 하나요? public static void main(String[] args) { List<Student> students = DataFactory.initData(); List<Student> studentNames = students.stream().map(student -> { if ("汤霖".equals(student.getName())) { student.setChineseScore(90); } return student; }).collect(Collectors.toList()); for (Student studentName : studentNames) { System.out.println(studentName); } //打印老的list System.out.println("-----改之前的数据-----"); for (Student studentName : students) { System.out.println(studentName); } }출력 결과:

위 결과를 보면 Tang Lin의 중국어 점수가 실제로 90
으로 변경된 것을 알 수 있는데, 이는 정확합니다. 원본 데이터를 보면 역시 90
으로 변경된 것을 알 수 있는데, 위에서 언급한 것처럼 map() 메소드는 새로운 스트림을 생성하는데, 원본 스트림의 데이터도 다음과 같은 이유로 수정되었습니다. 코드 줄이 원본에 있음 참조 유형의 데이터가 스트림의 요소에 따라 수정되면 원본 스트림의 데이터도 수정됩니다.
위 내용은 Java8 StreamAPI에서 map() 메소드를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
