게시판 목록에서 게시물 제목이 "중"으로 시작하는 것을 모두 추출
//게시판 목록
List<BbsDto> list = bbsDao.selectListAllBbs();
// filter 메서드는 컬렉션을 조건에 의한 선택을 할때 유용하다.
// filter 메서드는 boolean 결과를 리턴하는 람다 표현식이 필요하다.
// 예제의 collection 메서드는 filter 표현식에 나온 값을 list로 변경한다.
// 게시판 제목이 '중'로 시작하는 배열을 모두 출력
final List<BbsDto> result_startsWithS =
list.stream().filter(v -> v.getTitle().startsWith("중"))
.collect(Collectors.toList());
log.info(result_startsWithS.toString());
게시판 목록에서 게시판번호가 50보다 큰것 모두 추출
//게시판 목록
List<BbsDto> list = bbsDao.selectListAllBbs();
//게시판번호가 50보다 큰것 모두 추출하기
List<BbsDto> result_example = list.stream()
.filter(v -> v.getBno() > 50)
.collect(Collectors.toList());
log.info(result_example.toString());
게시판 목록에서 제목이 "중복"이고 게시물번호가 100보다 큰것 모두 추출하기
//제목이 중복이고 게시판번호가 100보다 큰것 모두 추출하기
List<BbsDto> result_example2 = list.stream()
.filter(v -> "중복".equals(v.getTitle()) && v.getBno() > 100)
.collect(Collectors.toList());
리스트내에서 name키의 중복되는 값이 있을경우 해당 열 제거하기
// Vo 작성
public class Member {
private int id;
private String name;
private String phone;
}
// 리스트에 넣기 1.방법
List<Member> members = Arrays.asList(
new Member(1, "김유신", "010-1234-5678"),
new Member(2, "이순신", "010-2345-6789"),
new Member(3, "유관순", "010-3456-7890"),
new Member(1, "김유신", "010-1234-4321"),
new Member(2, "이순신", "010-2345-5555")
);
// 리스트에 넣기 2.방법
List<Member> members = List.of(
new Member(1, "김유신", "010-1234-5678"),
new Member(2, "이순신", "010-2345-6789"),
new Member(3, "유관순", "010-3456-7890"),
new Member(1, "김유신", "010-1234-4321"),
new Member(2, "이순신", "010-2345-5555")
);
둘의 차이는?
List.of와 Arrays.asList는 두 가지 다른 방법으로 리스트를 생성하는 데 사용되는 메서드이다.
그러나 이들 간에 몇 가지 중요한 차이점이 있다.
1. 가변성 (Mutability):
List.of: 반환된 리스트는 불변(immutable)이다. 따라서 요소를 추가하거나 제거하는 것이 불가능하다.
Arrays.asList: 반환된 리스트는 고정 크기로, 크기를 변경할 수 없지만 내부 배열은 수정 가능하다. 즉, 요소의 값을 변경하는 것은 가능하지만, 크기를 변경하는 것은 불가능하다.
2. Null 처리:
List.of: null 값을 요소로 사용하려고 시도하면 NullPointerException이 발생한다.. 이 메서드는 요소로 null을 허용하지 않는다.
Arrays.asList: null 값을 요소로 사용할 수 있다.
3. 원본 배열과의 관계:
List.of: 내부적으로는 새로운 객체를 생성하며, 원본 배열과의 관계가 없다.
Arrays.asList: 반환된 리스트는 원본 배열에 대한 뷰(view)이므로, 리스트를 수정하면 원본 배열도 변경된다. 반대로, 원본 배열을 수정하면 리스트에도 영향을 미친다.
// List.of 예제
List<String> immutableList = List.of("A", "B", "C");
// 아래 주석 처리된 코드는 UnsupportedOperationException 발생
// immutableList.add("D");
// Arrays.asList 예제
List<String> fixedSizeList = Arrays.asList("A", "B", "C");
// 아래 주석 처리된 코드는 가능하지만, 크기 변경 불가능
// fixedSizeList.set(0, "D");
// fixedSizeList.add("E"); // UnsupportedOperationException 발생
// null 처리
List<String> nullableList = Arrays.asList("A", null, "C"); // 가능
// List<String> nonNullableList = List.of("A", null, "C"); // NullPointerException 발생
List<Members> distinctMembers = targetList.stream()
.collect(Collectors.toMap(Members::getMemberName, item -> item, (existing, replacement) -> existing))
.values()
.stream()
.collect(Collectors.toList());