Java8 부터 사용 가능한 Stream 관련 함수 사용 Sample 정리
업데이트:
JAVA8 부터 사용 가능한 Stream 관련 함수 사용법을 기록해 놓은 포스트 입니다. 자꾸 잊어버려서 정리해놓습니다.
List Object 의 각 Object를 새로운 Object로 mapping 후 List 로 리턴
this.playerRepository.findAll()
.stream()
.collect(Collectors.mapping(p -> new Player(p.getId(),p.getName(),p.getNum(),p.getPosition()), Collectors.toList()));
// 기존의 List 로 Return
this.playerRepository.findAll()
.stream()
.collect(Collectors.toList()));
List Object Filter 후 리턴
// 명령어 한줄로 사용시
foundBoard.getArticles().stream().filter(article -> article.getArticleId().equals(articleId)).findFirst().get();
// 명령어 한줄 이상일 때
foundBoard.getArticles().stream().filter(article -> {
if(article.getArticleId().equals(articleId)){
return true;
}
return false;
}).findFirst().get();
Map 형태의 key,value Stream 사용법
boardMap.values().stream().findFirst().get()
Nested Loop 형태를 Stream 형태로 구현
// anyMatch 를 사용해서 또하나의 List 에 있는 정보를 비교 가능함.
// Stream 은 한번만 사용가능. For loop 안에 Stream 사용하면 에러남.
List<Car> filteredCars =
cars.stream()
.filter (
car -> wheels.stream()
.anyMatch(wheel -> wheel.getColor() == car.getColor() &&
wheel.isWorking()))
.collect(Collectors.toList());
JSON to List Object
Type listType = new TypeToken<List<Item>>(){}.getType();
List<Item> items = (new Gson()).fromJson(this.ItemsJson, listType);
// 반대로 List<Object> to JSON
this.ItemsJson = (new Gson()).toJson(getItems());
// Gson format 적용
Gson gson = new GsonBuilder().setPrettyPrinting().create();
gson.toJson(Obj);
JSON from/to Object
ObjectMapper mapper = new ObjectMapper();
Test obj = new Test();
//Object to JSON in file
mapper.writeValue(new File("c:\\file.json"), obj);
//Object to JSON in String
String jsonInString = mapper.writeValueAsString(obj);
Sort 사용법
attrs.get().stream().sorted().collect(Collectors.toList());
//관련 형태 사용법
.sorted(Comparator.reverseOrder())
.sorted(Comparator.comparing(Student::getAge)
.sorted(Comparator.comparing(Student::getAge).reversed())
// 사용하고자 하는 List Object Class 에 compareTo override 및 Comparable implements
public class AttrsJpo implements Comparable<AttrsJpo>{
@Override
public int compareTo(AttrsJpo o) {
// TODO Auto-generated method stub
// 원하는 멤버 변수 비교 세팅하면 됨.
return id.compareTo(o.getId());
}
}