lambda 표현식list 정렬
1717 단어 Java 기반
1 배경
대상list를 정렬합니다. 정렬 필드는 대상의sortNum입니다. 정렬하기 전에sortNum이null인 대상을 제거합니다.
정렬 대기 bean 정의public class TestBean {
private Integer id;
private String name;
private Integer sortNum;
}
정렬에 실패한 CASE 2개 list.stream().filter(testBean -> testBean != null && testBean.getSortNum() != null)
.collect(Collectors.toList()).sort(Comparator.comparing(TestBean::getSortNum));
3 올바른 정렬
정렬 성공:List listNew = list.stream().filter(testBean -> testBean != null && testBean.getSortNum() != null)
.sorted(Comparator.comparing(TestBean::getSortNum)).collect(Collectors.toList());
요약:
list.stream.filter.collect.sort 정렬 없음,list.stream.filter.sorted.collect 정렬했습니다.
물론 sortNum이 비어 있는 대상을 제거하지 않아도 됩니다.list.sort(Comparator.comparing(TestBean::getSortNum));
물론 이런 정렬은sortNum이 비어 있는 대상이 되면 빈 바늘 이상을 던진다.
만약 빈 값이 있는 대상을 정렬하려고 한다면, 이 대상들을 제거하고 싶지 않고, NPE가 있기를 원하지 않는다면 어떻게 하겠는가?
1) 정수 및 빈 값 앞list.sort(Comparator.comparing(TestBean::getSortNum, Comparator.nullsFirst(Comparator.naturalOrder())));
2) 정수 및 빈 값 뒤에 정렬list.sort(Comparator.comparing(TestBean::getSortNum, Comparator.nullsLast(Comparator.naturalOrder())));
3) 역순 및 빈 값 앞list.sort(Comparator.comparing(TestBean::getSortNum, Comparator.nullsFirst(Comparator.reverseOrder())));
4) 역순 및 빈 값 뒤에 정렬list.sort(Comparator.comparing(TestBean::getSortNum, Comparator.nullsLast(Comparator.reverseOrder())));
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
FTP의 액티브 모드 및 패시브 모드
로그인에 성공한 후list 목록이나 데이터를 읽을 때 클라이언트는 랜덤으로 하나의 포트(1024 이상)를 개방하고 포트를 FTP 서버에 보내서 서버 클라이언트에게 주동 모드를 사용하고 개방하라고 알려준다
FTP 서버...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
public class TestBean {
private Integer id;
private String name;
private Integer sortNum;
}
list.stream().filter(testBean -> testBean != null && testBean.getSortNum() != null)
.collect(Collectors.toList()).sort(Comparator.comparing(TestBean::getSortNum));
3 올바른 정렬
정렬 성공:List listNew = list.stream().filter(testBean -> testBean != null && testBean.getSortNum() != null)
.sorted(Comparator.comparing(TestBean::getSortNum)).collect(Collectors.toList());
요약:
list.stream.filter.collect.sort 정렬 없음,list.stream.filter.sorted.collect 정렬했습니다.
물론 sortNum이 비어 있는 대상을 제거하지 않아도 됩니다.list.sort(Comparator.comparing(TestBean::getSortNum));
물론 이런 정렬은sortNum이 비어 있는 대상이 되면 빈 바늘 이상을 던진다.
만약 빈 값이 있는 대상을 정렬하려고 한다면, 이 대상들을 제거하고 싶지 않고, NPE가 있기를 원하지 않는다면 어떻게 하겠는가?
1) 정수 및 빈 값 앞list.sort(Comparator.comparing(TestBean::getSortNum, Comparator.nullsFirst(Comparator.naturalOrder())));
2) 정수 및 빈 값 뒤에 정렬list.sort(Comparator.comparing(TestBean::getSortNum, Comparator.nullsLast(Comparator.naturalOrder())));
3) 역순 및 빈 값 앞list.sort(Comparator.comparing(TestBean::getSortNum, Comparator.nullsFirst(Comparator.reverseOrder())));
4) 역순 및 빈 값 뒤에 정렬list.sort(Comparator.comparing(TestBean::getSortNum, Comparator.nullsLast(Comparator.reverseOrder())));
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
FTP의 액티브 모드 및 패시브 모드
로그인에 성공한 후list 목록이나 데이터를 읽을 때 클라이언트는 랜덤으로 하나의 포트(1024 이상)를 개방하고 포트를 FTP 서버에 보내서 서버 클라이언트에게 주동 모드를 사용하고 개방하라고 알려준다
FTP 서버...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
List listNew = list.stream().filter(testBean -> testBean != null && testBean.getSortNum() != null)
.sorted(Comparator.comparing(TestBean::getSortNum)).collect(Collectors.toList());
list.sort(Comparator.comparing(TestBean::getSortNum));
list.sort(Comparator.comparing(TestBean::getSortNum, Comparator.nullsFirst(Comparator.naturalOrder())));
list.sort(Comparator.comparing(TestBean::getSortNum, Comparator.nullsLast(Comparator.naturalOrder())));
list.sort(Comparator.comparing(TestBean::getSortNum, Comparator.nullsFirst(Comparator.reverseOrder())));
list.sort(Comparator.comparing(TestBean::getSortNum, Comparator.nullsLast(Comparator.reverseOrder())));
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
FTP의 액티브 모드 및 패시브 모드로그인에 성공한 후list 목록이나 데이터를 읽을 때 클라이언트는 랜덤으로 하나의 포트(1024 이상)를 개방하고 포트를 FTP 서버에 보내서 서버 클라이언트에게 주동 모드를 사용하고 개방하라고 알려준다 FTP 서버...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.