강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

seonjun Moon님의 프로필 이미지
seonjun Moon

작성한 질문수

코딩으로 학습하는 GoF의 디자인 패턴

이터레이터 패턴 1부 - 패턴 소개

강의에서는 잘 되는데...

작성

·

232

0

예제 코드를 활용해서 공부를 하던 중 

잘 모르겟는게 보이는데요...

그건 바로 코드는 눈을 씻고 찾아봐도 동일한데

정렬이 절대 안되는 겁니다. 

 

무슨말이냐면...

 

_01_before의 Client.java에서 

 

코드는 물론 똑같이 작성했고요...

package me.whiteship.designpatterns._03_behavioral_patterns._16_iterator._01_before;

import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public class Client {

public static void main(String[] args) {
Board board = new Board();
board.addPost("디자인 패턴 게임");
board.addPost("선생님, 저랑 디자인 패턴 하나 학습하시겠습니까?");
board.addPost("지금 이 자리에 계신 여러분들은 모두 디자인 패턴을 학습하고 계신 분들입니다.");

// TODO 들어간 순서대로 순회하기
List<Post> posts = board.getPosts();
for (int i = 0 ; i < posts.size() ; i++) {
Post post = posts.get(i);
System.out.println(post.getTitle());
}

// TODO 가장 최신 글 먼저 순회하기
Collections.sort(posts, (p1, p2) -> p2.getCreatedDateTime().compareTo(p1.getCreatedDateTime()));
for (int i = 0 ; i < posts.size() ; i++) {
Post post = posts.get(i);
System.out.println(post.getTitle());
}
}

}

실행하면 분명 Collection.sort로 정렬을 했는데

결과는 다음과 같습니다.

-+----------

디자인 패턴 게임

선생님, 저랑 디자인 패턴 하나 학습하시겠습니까?

지금 이 자리에 계신 여러분들은 모두 디자인 패턴을 학습하고 계신 분들입니다.

디자인 패턴 게임

선생님, 저랑 디자인 패턴 하나 학습하시겠습니까?

지금 이 자리에 계신 여러분들은- 모두 디자인 패턴을 학습하고 계신 분들입니다.

-------------------

 

당황스러운 것은 제가 이것을 같이 따라서 작성해보고 실행을 했는데 이러한 결과가 나와서 git에 올려두신 파일을 돌려봣는데 다음과 같은 결과가 나온 것입니다. 

 

제가 무엇을 놓치고 있는 걸까요?

 

답변 1

0

백기선님의 프로필 이미지
백기선
지식공유자

Board에는 코드가 어떻게 작성되어 있나요?

seonjun Moon님의 프로필 이미지
seonjun Moon
질문자

board.java

package me.whiteship.designpatterns._03_behavioral_patterns._16_iterator._01_before;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

public class Board {

List<Post> posts = new ArrayList<>();

public List<Post> getPosts() {
return posts;
}

public void setPosts(List<Post> posts) {
this.posts = posts;
}

public void addPost(String content) {
this.posts.add(new Post(content));
}
}

 

Post.java

package me.whiteship.designpatterns._03_behavioral_patterns._16_iterator._01_before;

import java.time.LocalDateTime;

public class Post {

private String title;

private LocalDateTime createdDateTime;

public Post(String title) {
this.title = title;
this.createdDateTime = LocalDateTime.now();
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public LocalDateTime getCreatedDateTime() {
return createdDateTime;
}

public void setCreatedDateTime(LocalDateTime createdDateTime) {
this.createdDateTime = createdDateTime;
}
}

 

컴퓨터는 거짓말을 하지 않는다지만 정말 저는 모르겟네요...

seonjun Moon님의 프로필 이미지
seonjun Moon
질문자

일부러 Thread를 걸어보니 컴퓨터 성능이 너무 좋아서... LocalDateTime 비교 자체가 불가능(?)햇는지 모르겟으나... 너무 찰나의 시간에 객체가 만들어지니 시간이 다 똑같다고 판단해서 정렬이 안되었던것 같습니다. 열심히 공부하겟습니다...,

seonjun Moon님의 프로필 이미지
seonjun Moon

작성한 질문수

질문하기