• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

Stream 이 처리하는 데이터 소스 변경

22.01.22 12:37 작성 조회수 173

3

안녕하세요 강의 정말 잘 듣고있습니다! 

Stream 속성중에 2번쨰, 원본 데이터 소스는 변경하지 않는다고 레퍼런스에 적혀있어서 학습용도로 혼자 공부하면서 테스트해보았는데, 

Functional in nature. An operation on a stream produces a result, but does not modify its source.

정말 원본 데이터가 안바뀌는지 궁금해서 해보았습니다. 

List<Food> foods = new ArrayList<>();
foods.add(new Food("Pizza",200));
foods.add(new Food("Bob",100));
foods.add(new Food("Chicken",400));

List<Food> result = foods.stream().map((food) -> {
food.setName("changed");
return food;
}).collect(Collectors.toList());

위 코드를 실행했을떄 collection내에 원본 객체들이 변경되지 않을거라고 생각했는데,  결과를 출력해보니 collection내 원본객체들이 모두 변경되어서 제가 뭔가 잘못 이해한 부분이 있는 것 같아서 질문드립니다  

답변 3

·

답변을 작성해보세요.

2

리스트 안에 들어있는 원본 데이터인 Food 인스턴스는 안바꼈어요.

다만 setter를 사용해서 Food 인스턴스 안에 있는 name은 바뀌었죠.

 

 

0

mutogether님의 프로필

mutogether

2022.02.06

저도 헷갈렸는데 foods 와 result 였네요. 질문과 답변 감사합니다!

0

katd6님의 프로필

katd6

질문자

2022.01.25

넵 이해됐습니다 감사합니다!