-
카테고리
-
세부 분야
기타 (개발 · 프로그래밍)
-
해결 여부
미해결
강의에서는 잘 되는데...
22.04.18 23:14 작성 조회수 133
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에 올려두신 파일을 돌려봣는데 다음과 같은 결과가 나온 것입니다.
제가 무엇을 놓치고 있는 걸까요?
답변을 작성해보세요.
0
seonjun Moon
질문자2022.04.19
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
질문자2022.04.20
일부러 Thread를 걸어보니 컴퓨터 성능이 너무 좋아서... LocalDateTime 비교 자체가 불가능(?)햇는지 모르겟으나... 너무 찰나의 시간에 객체가 만들어지니 시간이 다 똑같다고 판단해서 정렬이 안되었던것 같습니다. 열심히 공부하겟습니다...,
답변 1