import java.util.ArrayList;
import java.util.List;
public class T01ArrayListTest {
public static void main(String[] args) {
// 기본 용량(Default Capacity)은 10 이다.
List list1 = new ArrayList();
// add()메서드를 사용하여 데이터를 추가한다.
list1.add("aaa");
list1.add("bbb");
list1.add(111); // list1.add(new Integer(111));와 같음
list1.add('k'); //wrapper class
list1.add(true);
list1.add(12.34);
// size() => 데이터 개수
System.out.println("size => " + list1.size());
System.out.println("list1 => " + list1);
// get()으로 데이터 꺼내오기
System.out.println("1번째 자료 => " + list1.get(0));
// 데이터 끼워넣기도 add() 사용한다.
list1.add(0, "zzz");
System.out.println("zzz 끼워넣은 후 => "+ list1);
// 데이터 변경하기(set 메서드 사용)
String temp = (String) list1.set(0, "YYY"); //set(바꿀위치,바꿀내용)
System.out.println("temp=> " + temp);
System.out.println("데이터 변경 후 list1 => " + list1);
// 데이터 삭제하기(remove메서드 이용)
list1.remove(0); //int값 -> index값
System.out.println("첫번째 데이터 삭제 후 => " + list1);
list1.remove("bbb"); //object값 -> 위치는 모르는데 값을 알아
System.out.println("bbb 삭제 후 => " + list1);
System.out.println("---------------------------------------");
// 111 지우기...
list1.remove(new Integer(111)); //객체를 만들어서 지정해줘야함
System.out.println("111삭제 후 => " +list1);
///////////////////////////////////////////////////////////
//String만 담을 List
List<String> list2 = new ArrayList<String>();
list2.add("AAA");
list2.add("BBB");
list2.add("CCC");
list2.add("DDD");
list2.add("EEE");
for (String str : list2) {
System.out.println(str);
}
// contains(비교객체) => 리스트에 '비교객체'가 있으면 true
// 없으면 false를 반환함.
System.out.println(list2.contains("DDD")); // true
System.out.println(list2.contains("ZZZ")); // false
// indexOf(비교객체) => 리스트에서 '비교객체'를 찾아 '비교객체'가
// 존재하는 index 값을 반환함. 없으면 -1 반환함.
System.out.println("DDD의 index값: "+ list2.indexOf("DDD"));
System.out.println("ZZZ의 index값: "+ list2.indexOf("ZZZ"));
System.out.println("--------------------------------------");
for(int i=0; i<list2.size(); i++) {
list2.remove(i); //모든 데이터 값 지우기
System.out.println(i + " 삭제함.");
}
System.out.println("list2 의 크기 => " + list2.size());
}
}
LinkedList (ArrayList와의 차이점 구분하기)
- Stack (넣을때 push, 꺼낼때 pop) :
우물모양에 차곡차곡 쌓아서 꺼낼땐 가장 나중에 넣은게 나옴. (후입선출) LIFO : Last In First Out
- Queue (넣을때 offer, 꺼낼때 poll)
가장 먼저 넣은게 가장 먼저 나옴. (선입선출) FIFO : First In First Out
import java.util.LinkedList;
public class T02StackQueueTest {
public static void main(String[] args) {
/*
Stack => 후입선출(LIFO)의 자료 구조 last in first out ex)웹서핑할때 뒤로가기 버튼
Queue => 선입선출(FIFO)의 자료 구조 first in first out
*/
LinkedList<String> stack = new LinkedList<String>();
/*
Stack방식의 동작을 위한 메서드
1) 자료 입력: push(저장할 값)
2) 자료 출력: pop() => 자료를 꺼내온 후 꺼내온 자료를 stack에서
삭제한다.
*/
stack.push("홍길동");
stack.push("일지매");
stack.push("변학도");
stack.push("강감찬");
System.out.println("현재 stack값들: " + stack);
String data = stack.pop();
System.out.println("꺼내온 자료: "+data);
System.out.println("꺼내온 자료: "+stack.pop());
System.out.println("현재 stack값들: " + stack);
stack.push("성춘향");
System.out.println("현재 stack값들: " + stack);
System.out.println("꺼내온 자료: "+stack.pop());
System.out.println("====================================");
System.out.println();
LinkedList<String> queue = new LinkedList<String>();
/*
Queue 방식의 동작을 위한 메서드
1) 자료 입력: offer(저장할값)
2) 자료 출력: poll() => 자료를 Queue에서 꺼내온 후 꺼내온 자료는
Queue에서 삭제한다.
*/
queue.offer("홍길동");
queue.offer("일지매");
queue.offer("변학도");
queue.offer("강감찬");
System.out.println("현재 queue의 값: " + queue);
String temp = queue.poll();
System.out.println("꺼내온 자료: " + temp);
System.out.println("꺼내온 자료: " + queue.poll());
System.out.println("현재 queue의 값: " + queue);
if(queue.offer("성춘향")) {
System.out.println("신규 등록 자료: 성춘향");
}
System.out.println("현재 queue의 값: " + queue);
System.out.println("꺼내온 자료: " + queue.poll());
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class T03ListSortTest {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("일지매");
list.add("홍길동");
list.add("성춘향");
list.add("변학도");
list.add("이순신");
System.out.println("정렬 전 : " + list);
// 정렬은 Collection.sort()메서드를 이용하여 정렬한다.
// 정렬은 기본적으로 '오름차순 정렬'을 수행한다.
Collections.sort(list); //오름차순으로 정렬하기
System.out.println("정렬 후 : " + list);
// Collections.reverse(list); //내림차순
// System.out.println("내림차순 정렬 후 : "+ list);
// 섞기..
Collections.shuffle(list);
System.out.println("섞은 후 : " + list);
Collections.sort(list, new Desc());
System.out.println("외부정렬자를 이용한 정렬 후 : " + list);
}
}
// 정렬방식을 결정하는 클래스(외부정렬자)는 Comparator를 구현해야 한다.
class Desc implements Comparator<String> {
/*
compare()메서드의 반환값을 결정하는 방법
=> 이 메서드가 양수를 반환하면 두 값의 순서가 바뀐다.(오름차순이 기본임)
- 오른차순 정렬일 경우
=> 앞의 값이 크면 양수, 같으면 0, 앞의 값이 작으면 음수를 반환하도록 한다.
*/
@Override
public int compare(String str1, String str2) {
return str1.compareTo(str2) * -1;
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class T04ListSortTest {
public static void main(String[] args) {
List<Member> memList = new ArrayList<Member>();
memList.add(new Member(1, "홍길동", "010-1111-1111"));
memList.add(new Member(5, "변학도", "010-1111-2222"));
memList.add(new Member(9, "성춘향", "010-1111-3333"));
memList.add(new Member(3, "이순신", "010-1111-4444"));
memList.add(new Member(6, "강감찬", "010-1111-5555"));
memList.add(new Member(2, "일지매", "010-1111-6666"));
System.out.println("정렬 전: " );
for (Member mem : memList) {
System.out.println(mem);
}
Collections.sort(memList);
System.out.println("정렬 후 : " );
for (Member mem : memList) {
System.out.println(mem);
}
}
}
// 회원정보를 담기위한 클래스 정의
class Member implements Comparable<Member> {
private int num; // 번호
private String name; // 이름
private String tel; // 전화번호
public Member(int num, String name, String tel) {
super();
this.num = num;
this.name = name;
this.tel = tel;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
@Override
public String toString() {
return "Member [num=" + num + ", name=" + name + ", tel=" + tel + "]";
}
//회원이름을 기준으로 오름차순 정렬하기
@Override
public int compareTo(Member mem) {
return this.getName().compareTo(mem.getName());
}
}
'중급과정 > HighJava' 카테고리의 다른 글
[Java] 로또 구매 프로그램 예제 (ArrayList, HashSet, Collections) (0) | 2023.11.30 |
---|---|
[Java] 학생 리스트 정렬 (List, Comparable, Comparator) (0) | 2023.11.30 |
[Java] Thread(스레드)를 이용한 알파벳 대문자 출력과 출력순대로 순위 매기는 프로그램 작성예제 (0) | 2023.11.29 |
[Java] Thread(스레드)를 이용한 가위바위보 예제 (1) | 2023.11.29 |
[Java] 2일차 HashSet, TreeSet, equals, hashCode (1) | 2023.11.23 |
import java.util.ArrayList;
import java.util.List;
public class T01ArrayListTest {
public static void main(String[] args) {
// 기본 용량(Default Capacity)은 10 이다.
List list1 = new ArrayList();
// add()메서드를 사용하여 데이터를 추가한다.
list1.add("aaa");
list1.add("bbb");
list1.add(111); // list1.add(new Integer(111));와 같음
list1.add('k'); //wrapper class
list1.add(true);
list1.add(12.34);
// size() => 데이터 개수
System.out.println("size => " + list1.size());
System.out.println("list1 => " + list1);
// get()으로 데이터 꺼내오기
System.out.println("1번째 자료 => " + list1.get(0));
// 데이터 끼워넣기도 add() 사용한다.
list1.add(0, "zzz");
System.out.println("zzz 끼워넣은 후 => "+ list1);
// 데이터 변경하기(set 메서드 사용)
String temp = (String) list1.set(0, "YYY"); //set(바꿀위치,바꿀내용)
System.out.println("temp=> " + temp);
System.out.println("데이터 변경 후 list1 => " + list1);
// 데이터 삭제하기(remove메서드 이용)
list1.remove(0); //int값 -> index값
System.out.println("첫번째 데이터 삭제 후 => " + list1);
list1.remove("bbb"); //object값 -> 위치는 모르는데 값을 알아
System.out.println("bbb 삭제 후 => " + list1);
System.out.println("---------------------------------------");
// 111 지우기...
list1.remove(new Integer(111)); //객체를 만들어서 지정해줘야함
System.out.println("111삭제 후 => " +list1);
///////////////////////////////////////////////////////////
//String만 담을 List
List<String> list2 = new ArrayList<String>();
list2.add("AAA");
list2.add("BBB");
list2.add("CCC");
list2.add("DDD");
list2.add("EEE");
for (String str : list2) {
System.out.println(str);
}
// contains(비교객체) => 리스트에 '비교객체'가 있으면 true
// 없으면 false를 반환함.
System.out.println(list2.contains("DDD")); // true
System.out.println(list2.contains("ZZZ")); // false
// indexOf(비교객체) => 리스트에서 '비교객체'를 찾아 '비교객체'가
// 존재하는 index 값을 반환함. 없으면 -1 반환함.
System.out.println("DDD의 index값: "+ list2.indexOf("DDD"));
System.out.println("ZZZ의 index값: "+ list2.indexOf("ZZZ"));
System.out.println("--------------------------------------");
for(int i=0; i<list2.size(); i++) {
list2.remove(i); //모든 데이터 값 지우기
System.out.println(i + " 삭제함.");
}
System.out.println("list2 의 크기 => " + list2.size());
}
}
LinkedList (ArrayList와의 차이점 구분하기)
- Stack (넣을때 push, 꺼낼때 pop) :
우물모양에 차곡차곡 쌓아서 꺼낼땐 가장 나중에 넣은게 나옴. (후입선출) LIFO : Last In First Out
- Queue (넣을때 offer, 꺼낼때 poll)
가장 먼저 넣은게 가장 먼저 나옴. (선입선출) FIFO : First In First Out
import java.util.LinkedList;
public class T02StackQueueTest {
public static void main(String[] args) {
/*
Stack => 후입선출(LIFO)의 자료 구조 last in first out ex)웹서핑할때 뒤로가기 버튼
Queue => 선입선출(FIFO)의 자료 구조 first in first out
*/
LinkedList<String> stack = new LinkedList<String>();
/*
Stack방식의 동작을 위한 메서드
1) 자료 입력: push(저장할 값)
2) 자료 출력: pop() => 자료를 꺼내온 후 꺼내온 자료를 stack에서
삭제한다.
*/
stack.push("홍길동");
stack.push("일지매");
stack.push("변학도");
stack.push("강감찬");
System.out.println("현재 stack값들: " + stack);
String data = stack.pop();
System.out.println("꺼내온 자료: "+data);
System.out.println("꺼내온 자료: "+stack.pop());
System.out.println("현재 stack값들: " + stack);
stack.push("성춘향");
System.out.println("현재 stack값들: " + stack);
System.out.println("꺼내온 자료: "+stack.pop());
System.out.println("====================================");
System.out.println();
LinkedList<String> queue = new LinkedList<String>();
/*
Queue 방식의 동작을 위한 메서드
1) 자료 입력: offer(저장할값)
2) 자료 출력: poll() => 자료를 Queue에서 꺼내온 후 꺼내온 자료는
Queue에서 삭제한다.
*/
queue.offer("홍길동");
queue.offer("일지매");
queue.offer("변학도");
queue.offer("강감찬");
System.out.println("현재 queue의 값: " + queue);
String temp = queue.poll();
System.out.println("꺼내온 자료: " + temp);
System.out.println("꺼내온 자료: " + queue.poll());
System.out.println("현재 queue의 값: " + queue);
if(queue.offer("성춘향")) {
System.out.println("신규 등록 자료: 성춘향");
}
System.out.println("현재 queue의 값: " + queue);
System.out.println("꺼내온 자료: " + queue.poll());
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class T03ListSortTest {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("일지매");
list.add("홍길동");
list.add("성춘향");
list.add("변학도");
list.add("이순신");
System.out.println("정렬 전 : " + list);
// 정렬은 Collection.sort()메서드를 이용하여 정렬한다.
// 정렬은 기본적으로 '오름차순 정렬'을 수행한다.
Collections.sort(list); //오름차순으로 정렬하기
System.out.println("정렬 후 : " + list);
// Collections.reverse(list); //내림차순
// System.out.println("내림차순 정렬 후 : "+ list);
// 섞기..
Collections.shuffle(list);
System.out.println("섞은 후 : " + list);
Collections.sort(list, new Desc());
System.out.println("외부정렬자를 이용한 정렬 후 : " + list);
}
}
// 정렬방식을 결정하는 클래스(외부정렬자)는 Comparator를 구현해야 한다.
class Desc implements Comparator<String> {
/*
compare()메서드의 반환값을 결정하는 방법
=> 이 메서드가 양수를 반환하면 두 값의 순서가 바뀐다.(오름차순이 기본임)
- 오른차순 정렬일 경우
=> 앞의 값이 크면 양수, 같으면 0, 앞의 값이 작으면 음수를 반환하도록 한다.
*/
@Override
public int compare(String str1, String str2) {
return str1.compareTo(str2) * -1;
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class T04ListSortTest {
public static void main(String[] args) {
List<Member> memList = new ArrayList<Member>();
memList.add(new Member(1, "홍길동", "010-1111-1111"));
memList.add(new Member(5, "변학도", "010-1111-2222"));
memList.add(new Member(9, "성춘향", "010-1111-3333"));
memList.add(new Member(3, "이순신", "010-1111-4444"));
memList.add(new Member(6, "강감찬", "010-1111-5555"));
memList.add(new Member(2, "일지매", "010-1111-6666"));
System.out.println("정렬 전: " );
for (Member mem : memList) {
System.out.println(mem);
}
Collections.sort(memList);
System.out.println("정렬 후 : " );
for (Member mem : memList) {
System.out.println(mem);
}
}
}
// 회원정보를 담기위한 클래스 정의
class Member implements Comparable<Member> {
private int num; // 번호
private String name; // 이름
private String tel; // 전화번호
public Member(int num, String name, String tel) {
super();
this.num = num;
this.name = name;
this.tel = tel;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
@Override
public String toString() {
return "Member [num=" + num + ", name=" + name + ", tel=" + tel + "]";
}
//회원이름을 기준으로 오름차순 정렬하기
@Override
public int compareTo(Member mem) {
return this.getName().compareTo(mem.getName());
}
}
'중급과정 > HighJava' 카테고리의 다른 글
[Java] 로또 구매 프로그램 예제 (ArrayList, HashSet, Collections) (0) | 2023.11.30 |
---|---|
[Java] 학생 리스트 정렬 (List, Comparable, Comparator) (0) | 2023.11.30 |
[Java] Thread(스레드)를 이용한 알파벳 대문자 출력과 출력순대로 순위 매기는 프로그램 작성예제 (0) | 2023.11.29 |
[Java] Thread(스레드)를 이용한 가위바위보 예제 (1) | 2023.11.29 |
[Java] 2일차 HashSet, TreeSet, equals, hashCode (1) | 2023.11.23 |