DataStructure 를 쓸 때 기억해야할 3가지
List 인터페이스
객체를 순서에 따라 저장하고 관리하는 데 필요한 메서드가 선언된 인터페이스.
자료구조 리스트(배열, 연결리스트)의 구현을 위한 인터페이스.
중복을 허용함
Map 인터페이스
쌍(pair)로 이루어진 객체를 관리하는 데 사용하는 메서드들이 선언된 인터페이스.
객체는 key-value의 쌍으로 이루어짐
key는 중복을 허용하지 않음
Set 인터페이스
순서와 관계없이 중복을 허용하지 않고 유일한 값을 관리하는 데 필요한 메서드가 선언됨.
아이디, 주민번호, 사번 등을 관리하는 데 유용.
저장된 순서와 출력되는 순서는 다를 수 있음.
set계열은 주머니
DataStructure1_List
package ch01;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
class Student {
String name;
int grade;
}
public class DataStructureTest1 {
public static void main(String[] args) {
List list0;
// 순서가 있고(인덱스가 있다) 중복이 가능하다.
// int의 클래스화 - 래퍼클래스 Integer
ArrayList<Integer> list = new ArrayList();
ArrayList<Student> member = new ArrayList<Student>();
ArrayList<Integer> num = new ArrayList<>();
// 선언과 동시에 초기화
ArrayList<Integer> list2 = new ArrayList<Integer>(Arrays.asList(1, 2, 3));
// 값 추가 방법
list.add(3); // index 0
list.add(null); // index 1
list.add(1, 10); // index 1번째에 10을 삽입 (null은 인덱스 2번으로 밀려 난다.)
System.out.println("값 확인 : " + list);
// 값 확인 : [3, 10, null] 원래 주소값이 나와야 하는데 잘나오는 것은 toString 메서드를 정의해서
// 값 삭제 방법
list.remove(2);
System.out.println("값 삭제 확인 : " + list);
// list.clear();
System.out.println("값 전체 삭제 확인 : " + list);
// 값 출력 방법
System.out.println("값 출력 방법 : " + list.get(1));
for (Integer i : list) {
System.out.println("for 사용방법 : " + i);// 3 ,10 elements 요소 출력
}
// while 사용방법(Iterator, hasNext, .next())
// 요소 순회(반복자) 컬렉션 프레임워크에 저장된 요소들을 하나씩 차례로 참조하는 것
Iterator<Integer> iter = list.iterator();
// hasNext가 있으면 true, 없으면 false
while (iter.hasNext()) {
System.out.println("while 사용 방법 : " + iter.next());
}
// 값 검색 방법
System.out.println(list.contains(1));
// list안에 정수값 1이 있는가?
System.out.println(list.contains(10));
// 값이 있으면 index의 번호를 반환, 없으면 -1을 반환하는 녀석.
System.out.println(list.indexOf(10));// 1번째 인덱스에 있다.
System.out.println(list.indexOf(300));// 없으면 -1을 반환한다.
System.out.println(list.indexOf(3));// 3은 0번째 인덱스에 있다.
// 문제 1
// 이름을 입력하면 names 리스트에 저장, while 문 반복
// 0번 눌러서 종료 되면 화면에 입력한 이름을 뿌려 주세요
ArrayList<String> names = new ArrayList<String>();
// Scanner 사용
Scanner scanner = new Scanner(System.in);
System.out.println("이름을 입력하세요");
String userInput = scanner.nextLine();
//해보기
// do {
//
// }while("end");
// while(flag) {
// userInput == names[];
//
// if(userInput==0) {
// flag = false;
// }
// }
}// end of main
}// end of class
DataStructure2_Set
package ch01;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;
public class DataStructureTest2 {
public static void main(String[] args) {
Set set0;
//순서가 없다. 중복값 불가
//HashSet 가장 많이 사용
HashSet <Integer> set1 = new HashSet<>();
set1.add(1);
set1.add(1);//중복값
set1.add(2);
set1.add(3);
set1.add(3);//중복값
System.out.println("set1 : " + set1);
//size 값
System.out.println("사이즈 확인 : " + set1.size());
//삭제
set1.remove(1);
// set1.clear();
System.out.println(set1);
// for (int i = 0; i < set1.size(); i++) {
// System.out.println("set1 값 확인 : " + i);
// }
//while문 사용 방법
Iterator<Integer> iter = set1.iterator();
while(iter.hasNext()) {
System.out.println("값 확인 : " + iter.next());
}
//내부에 값이 있는 지 확인
System.out.println(set1.contains(1));
System.out.println(set1.contains(3));
HashSet<Integer> set2 = new HashSet<>();
// set2. 사이즈가 6개면 완료
//아니면 한번 더 동작
//나
// while(set2.size() < 6) {
// set2.add(getRandomNumber());
// }
//강사님
boolean flag = true;
while(flag) {
set2.add(getRandomNumber());
if(set2.size() == 6) {
flag = false;
}
}
System.out.println(set2);
System.out.println(set2.size());
}//end of main
public static int getRandomNumber() {
Random random = new Random();
int value = random.nextInt(45)+1;
return value;
}
}//end of class
DataStructure3_Map
package ch01;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import java.util.Map.Entry;
public class DataStructureTest3 {
public static void main(String[] args) {
//전공생은 한 학기동안 배움, 사용하는 것은 몇 가지 안됨
Map map0;
//key 와 value 구조로 데이터를 저장한다.
HashMap<String, String> map1 = new HashMap<String, String>();
//null 값을 허용하지 않는다.
Hashtable<String, String> map2 = new Hashtable<>();
map1.put("A01", "김포공항 정문");
map1.put("A02", "김포공항 후문");
map1.put("A03", "김포공항 로비");
map1.put("B01", "인천공항 정문");
map1.put("B02", "인천공항 후문");
map1.put("B03", "인천공항 로비");
map1.put("C01", null);
System.out.println(map1);
// map2.put("D01", null);
System.out.println(map2);
//java.lang.NullPointerException 오류
//값을 출력 방법
System.out.println("--------------------");
System.out.println(map1.get("A01"));
System.out.println(map1.get("A02"));
System.out.println(map1.get("A03"));
//삭제 방법
System.out.println(map1.remove("C01"));
System.out.println("--------------------");
// map1.clear();//전체 삭제
System.out.println(map1);
//사이즈 확인 방법
System.out.println(map1.size());
//for 문 사용방법
//1. java.util.Map.Entry
for (Entry <String, String> entry : map1.entrySet()) {
System.out.println("key : " + entry.getKey() + ", value : " + entry.getValue());
}
System.out.println("--------------------");
//2. map1.keySet()
for (String key : map1.keySet()) {
System.out.println(key + " : " + map1.get(key));
}
}//end of main
}//end of class
HashMap
Phone
package ch02;
public class Phone {
String name;
String address;
String telephone;
public Phone(String name, String address, String telephone) {
this.name = name;
this.address = address;
this.telephone =telephone;
}
}//end of class phone
TelManagement
package ch02;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
public class TelManagement {
// 추가 static insert
public static void insert(HashMap < String, Phone > map) {
Phone phone;
String name, address, telephone;
Scanner s = new Scanner(System.in);
System.out.println("이름 >> :");
name = s.next();
System.out.println("주소 >> :");
address = s.next();
System.out.println("전화번호 >> :");
telephone = s.next();
phone = new Phone(name, address, telephone);
map.put(phone.name, phone);
System.out.println("등록이 완료");
}
// 삭제
public static void delete(HashMap < String, Phone > map) {
//key는 이름을 입력 받아서 사용
String delName;
Scanner s = new Scanner(System.in);
System.out.println("이름 >>");
delName = s.next();
if(map.containsKey(delName)) {
//삭제
map.remove(delName);
System.out.println(delName + "은 등록되지 않은 사람입니다.");
}
}
// 찾기
public static void search(HashMap < String, Phone > map) {
//key 이름을 입력 받아서 찾고 화면에 보여 주세요
String searchName;
Scanner s = new Scanner(System.in);
System.out.println("이름 >>");
searchName = s.next();
if(map.containsKey(searchName)) {
System.out.println(searchName + map.get(searchName).address);
}else {
System.out.println(searchName + "은 등록되지 않은 사람입니다.");
}
}
// 전체보기
public static void showInfo(HashMap < String, Phone > map) {
//화면에 전체 정보를 뿌려 주는 기능을 만들어 주세요
Set<String> names = map.keySet();
Iterator<String> it = names.iterator();
while(it.hasNext()) {
String name = it.next();
Phone person = map.get(name);
System.out.println(name + " " + person.telephone);
}
}
public static void main(String[] args) {
HashMap < String, Phone > map = new HashMap<String, Phone>();
//임시 데이터 만들어놓기
map.put("홍길동", new Phone("홍길동", "부산시","010-1111-1111"));
map.put("이순신", new Phone("이순신", "부산시2","010-2222-2222"));
//메서드 이용해보기
// insert(map);
// delete(map);
// search(map);
// showInfo(map);
//실행에 흐름 만들어 보기
System.out.println("----------------");
System.out.println("전화번호 관리 프로그램");
System.out.println("----------------");
//스캐너 이용해서
int menu;
while(true) {
System.out.println("추가 0, 삭제 1, 찾기 2, 전체보기는 3, 종료 4");
Scanner s = new Scanner(System.in);
menu = s.nextInt();
switch (menu) {
case 0:
insert(map);
break;
case 1:
delete(map);
break;
case 2:
search(map);
break;
case 3:
showInfo(map);
break;
case 4:
System.out.println("프로그램을 종료합니다.");
return;
default:
System.out.println("잘못입력했습니다. 다시 입력해주세요.");
break;
}
}
// System.out.println("========================");
// System.out.println(map);
}// end of main
}// end of class
'코리아 IT아카데미 > Java' 카테고리의 다른 글
20일차 | 문자 단위 입출력 스트림 (0) | 2021.11.12 |
---|---|
18일차 | git call back, 콜백메서드★, git branch 사용 (0) | 2021.11.10 |
17일차 | Git 관리, 래퍼 클래스 (0) | 2021.11.09 |
13일차 | (0) | 2021.11.09 |
14일차 | swing (0) | 2021.11.09 |