일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- git
- 깃허브
- 에러
- 프로그래머스
- 자바
- html tag
- 코드업
- 캡슐화
- stringbuffer
- HashSet
- 기본생성자
- DTO
- 부트캠프
- 상속
- Codeup
- 알고리즘
- 브랜치
- lv1
- java
- HTML
- SQL
- entity
- Python
- @builder
- @NoArgsConstructor
- 파이썬
- @AllArgsConstructor
- 부스트코스
- CRUD
- github
- Today
- Total
잉?
[Java] 메모장 만들기 + 향상된 for문, Linkedlist<> 타입 본문
팀장님이 스켈레톤 코드를 제공해 주면 그에 맞춰 기능을 구현하는 작업을 했다.
기능 구현도 어렵지만 난 뼈대를 작성하는것에 더 어려움을 느낀다.
특히 어떤 변수와 메소드가 필요하고 클래스 간의 흐름이 어떻게 구성되어야 하는지 같은 것들 말이다.
이런 나에게 스켈레톤 코드는 좋은 본보기가 되어준다.
이런 식으로 틀을 잡으면 되겠구나 하는 참고서가 하나 늘은 셈.
(야호!)
기능 하나하나 알지 못하는 상태에서 일단 떠듬떠듬 끼워 맞추는 식으로 작성하다 보면
얼렁뚱땅 돌아가긴 돌아가는 코드가 완성된다.
사실 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
'자바(Java)' 카테고리의 다른 글
[Java] 기본 생성자 + 기본 생성자가 필요한 이유 (0) | 2023.06.09 |
---|---|
[Java] Wrapper 클래스 박싱과 언박싱 + 문자와 문자열 알아보기 (0) | 2023.06.07 |
[Java] static이란? (클래스변수, 인스턴스변수) (0) | 2023.06.02 |
[Java] Object클래스, equals() 알아보기 (0) | 2023.05.26 |
[Java] 추상클래스란? abstract? + extends와 오버라이딩 (0) | 2023.05.24 |