월요일이다
헬요일로 고생했을 당신을 위해서
10초만 심호흡 하고 복습 해보자
그전에 매번과 똑같이 잡담을 하나 하자면,
오늘 독서실로 가기 위해서 집에서
나왔는데 어떤 아저씨랑 노인부부가
싸우고 있었다 아주 큰소리로 말이다
아저씨는 소주 빈병이 가득한 봉지를
들고 있었는데 아마 가득 들어있는
소주 병을 보고 할아버지가 뭐라고
했나보다 그것때문에 싸운듯 싶었다
별일 아닐수 있긴 한데, 아저씨가
돌아서면서 한말이 아직도 잊혀지지가 않는다
'그늘이 있어야 햇빛이 있는겁니다!'
엄청 멋있는 말이긴 한데 슬프더라.
뭔가 잘 안되서 매일 술먹는것
같아 보이던데 힘내셨으면 좋겠다
우리도 그늘이 되지 않기 위해
오늘도 열심히 복습해보자
이번에 다룰 내용은 list와 set이다
공통점도 있지만 차이점도 있어서
어떻게 쓰냐에 따라 수월함을 느낄수 있다
import java.util.*;
class ListEx1 {
public static void main(String[] args) {
List<String> list = new Vector<String>();
list.add("apple"); // 0
list.add("melon"); // 1
list.add("grape"); // 2
list.add("melon"); // 3
list.add("blueberry"); // 4
// 리스트의 일부분으로 새로운 리스트를 만들어 낸다.
List<String> others = list.subList(1, 4);
System.out.println(others);
System.out.println(list);
/*
System.out.println(list.indexOf("melon"));
System.out.println(list.lastIndexOf("melon"));
/*
// 원소의 위치를 구한다.(존재하지 않으면 -1)
int idx = list.indexOf("podo");
System.out.println(idx);
/*
// String fruit = list.get(2);
// System.out.println(fruit);
// 순회 시 주의할것!!!
list.add(2, "pineapple");
for(int idx=list.size()-1; idx>=0; idx--) {
// System.out.println(list.get(idx));
// 해당 인덱스 위치의 원소를 삭제한다.
list.remove(idx);
}
System.out.println(list);
*/
}
}
주석으로 처리된 부분은 여러가지
명령어의 기능을 확인하려고 넣었었다
어떤 기능을 하는지 확인해보고 싶다면
주석을 지우고 실행해보길 바란다
다른것들은 이전에 collection에 대해
공부할때랑 비슷하니 설명은 접고,
indexOf와 lastindexOf에 대해서 보자
실행되는 결과로 말하자면 melon이
위치한 인덱스 정보를 가져다 준다
lastIndexOf는 melon이 위치한
마지막 인덱스 정보를 가져다 준다
아주 유용하게 쓰니 알아두는게 좋다
import java.util.*; class ListEx2 { public static void main(String[] args) { // ArrayList(동기화X) Vectorvec = new Vector (); // 동기화(O) vec.add("아빠"); // 0 vec.add("아들"); // 1 vec.add("엄마"); // 2 vec.add("아들"); // 3 vec.add("딸"); // 4 vec.add("손자"); // 5 vec.add("아들"); // 6 vec.add("며느리"); // 7 vec.add("아들"); // 8 // 해당 위치의 원소를 변경 vec.set(1, "몰라"); System.out.println(vec); /* // 모든 "아들"의 위치를경출력하는 반복문을 작성하라. for(int idx=0; (idx=vec.indexOf("아들", idx)) >= 0; idx++) { System.out.println(idx); } boolean flag = true; int idx = 0; while(flag) { idx = vec.indexOf("아들", idx); if(idx < 0) { flag = false; } else { System.out.println(idx); idx++; } } /* int idx = 0; idx = vec.indexOf("아들", idx); System.out.println(idx); idx++; // idx부터 찾아라~ idx = vec.indexOf("아들", idx); System.out.println(idx); idx++; idx = vec.indexOf("아들", idx); System.out.println(idx); idx++; idx = vec.indexOf("아들", idx); System.out.println(idx); idx++; idx = vec.indexOf("아들", idx); System.out.println(idx); idx++; */ } }
이번 예제에서는 강의를 들을 당시에
실습을 해보았던 것이다
'아들'이라는 문자열의 위치를 출력하는
다양한 방법에 대해서 생각해보았는데,
주석에 처리된 것들이 열심히
생각해서 적은 내용들과 강사가
보여준 내용이 합쳐져있는것이다
코딩이란게 참 신기한것이
사람마다 다른 방법으로
똑같은 결과를 만들어 낼수
있다는 것 같다
그래서 재미있다고들 하는데
음.. 나는 잘 모르겠다
import java.util.*; class SetEx1 { public static void main(String[] args) { HashSetset = new HashSet (); set.add("a"); set.add("a"); set.add("a"); set.add("a"); set.add("a"); set.add("a"); System.out.println(set.size()); } }
set으로 넘어가자
HashSet과 TreeSet으로 나뉜다
둘의 차이점은 안타깝게도
잘 기억이 나질 않는다
구글에서 검색해보는걸 추천한다
나는 지식의 모자람에 대하여
부끄럼이 전혀 없는 당당함이
장점이니 이해하고 그냥 검색해서
찾아보는것을 권장한다
import java.util.*; class SetEx2 { public static void main(String[] args) { // 로또 번호를 추출하라~ TreeSetlotto = new TreeSet (); Random r = new Random(); while(lotto.size() != 6) { // int num = (int)(Math.random() * 45) + 1; int num = r.nextInt(45) + 1; lotto.add(num); } System.out.println(lotto); } }
Set과 List의 큰 차이점이라면
중복에 관련이 있다
Set은 중복을 허용하지 않는다
즉, 똑같은 숫자를 넣어줄경우
기존의 숫자가 있었더라면
그냥 무시하게 된다
나중에 로또 프로그램을 실습했었는데
그때 이게 참 유용했다
다른걸로 했다면 소스가 더 길어졌을것인데
중복이 없으니 아주 편했던 기억이 난다
오늘은 여기까지 하고 마무리 하겠다
헬요일 버티느라 수고하셨다
내일 봅시다
'IT > 자바' 카테고리의 다른 글
Map과 HashCode (0) | 2017.05.24 |
---|---|
Wrapper 클래스 BinarySearch (0) | 2017.05.23 |
Collection 및 Iterator (0) | 2017.05.22 |
Comparator 너는 누구니? (0) | 2017.05.19 |
배열 정렬과 compareTo (0) | 2017.05.18 |
댓글