잉?

[Java] 메모장 만들기 + 향상된 for문, Linkedlist<> 타입 본문

자바(Java)

[Java] 메모장 만들기 + 향상된 for문, Linkedlist<> 타입

Jye_647 2023. 6. 5. 22:17

팀장님이 스켈레톤 코드를 제공해 주면 그에 맞춰 기능을 구현하는 작업을 했다.

기능 구현도 어렵지만 난 뼈대를 작성하는것에 더 어려움을 느낀다.

특히 어떤 변수와 메소드가 필요하고 클래스 간의 흐름이 어떻게 구성되어야 하는지 같은 것들 말이다.

 

이런 나에게 스켈레톤 코드는 좋은 본보기가 되어준다.

이런 식으로 틀을 잡으면 되겠구나 하는 참고서가 하나 늘은 셈.

(야호!)


기능 하나하나 알지 못하는 상태에서 일단 떠듬떠듬 끼워 맞추는 식으로 작성하다 보면

얼렁뚱땅 돌아가긴 돌아가는 코드가 완성된다. 

 

사실 LinkedList <> 타입으로 클래스를 넣어준다는 게 아직 와닿지는 않는다.

난 여태 list를 활용해 본 적도 없었고 사용한다 해도 String, Integer 같은 객체를 사용했기에...

(아 이것도 wrapper클래스구나. 음.. 여튼ㅋㅋㅋㅋㅋ )

타입으로 클래스를 넣어줄 수 있다는 것은 매우 유용했다.

 

아래와 같이 일반적인 for문을 사용하게 되면 list에서 get메서드를 사용해 인덱스를 지정해준다음 가져올 값이 들어간 메소드를 가져와야 하는데 분명 더 간단한 방법이 있지 않나... 하며 찾아본 결과.

private LinkedList<Memo> list;

sb = new StringBuffer();
for(int i=0; i<list.size(); i++){
	sb.append(String.format("%d. %s | %s | %s\n", 
    					list.get(i).getNum(), 
    					list.get(i).getName(), 
                        		list.get(i).getPost(),
                        		list.get(i).dateFormat(Calendar.getInstance()) ));
}
System.out.println(sb);

 

 

향상된 for문을 사용하는 것이다.

여기도 Memo라는 클래스를 자료형으로 넣어서 사용한다.

아래코드와 같이 자료형을 Memo클래스로 지정해 주면 Memo클래스의 메서드를 불러올 수 있다. 

그래서 Memo클래스 타입의 변수명 memo에 list에 저장된 값들을 하나씩 넘겨주고, 그 값을 꺼내주기만 하면 된다.

코드를 비교해 보면 훨씬 까지는 아니어도 가독성이 좋아진 것을 볼 수 있다. 

private LinkedList<Memo> list;

sb = new StringBuffer();
// for(자료형 변수명 : 배열) {   }
for(Memo memo : list){
	sb.append(String.format("%d. %s | %s | %s\n", 
                            	memo.getNum(), 
                            	memo.getName(), 
                            	memo.getPost(), 
                            	memo.dateFormat(Calendar.getInstance())));
}
 System.out.println(sb);

아직 세세한 부분까지 완성한 것은 아니지만 큰 기능들은 구현한 상태이다.

https://github.com/JihyeChu/chapter2/tree/master/memo

 

 

 

 

Comments