package com.step5;
class ForgetA
{
int ival;
String s = null;
String s1 = new String();
ForgetA()
{
s = new String("나신입");
}
ForgetA(int ival)
{
s = new String("나초보");
}
}
public class Forgets {
public static void main(String[] args) {
System.out.println("main 호출");
String s = null;
System.out.println(s);
//이렇게 하면 nullpointException
System.out.println(s.length());
}
}
-----------------------------------------------
main 호출
null
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "s" is null
at com.step5.Forgets.main(Forgets.java:27)
NullPointetException 발생 -> 해결하려면? -> 인스턴스화 해서 사용
package com.step5;
class ForgetA
{
int ival;
String s = null;
String s1 = new String();
ForgetA()
{
s = new String("나신입");
}
ForgetA(int ival)
{
s = new String("나초보");
}
}
public class Forgets {
public static void main(String[] args) {
System.out.println("main 호출");
String s = null;
ForgetA fa = new ForgetA();
System.out.println(fa.s);
//이렇게 하면 nullpointException
System.out.println(s.length());
}
}
-------------------------------
main 호출
나신입
NullPointerException
왜 안 되는것인가?
package com.step5;
class ForgetA
{
int ival;
String s = null;
String s1 = new String();
ForgetA()
{
s = new String("나신입");
}
ForgetA(int ival)
{
s = new String("나초보");
}
}
public class Forgets {
public static void main(String[] args) {
System.out.println("main 호출");
String s = null;
ForgetA fa = new ForgetA();
System.out.println(fa.s);
//이렇게 하면 nullpointException
System.out.println(fa.s.length());
}
}
-----------------------------------------
main 호출
나신입
3
나신입을 -> 나지환으로 바꾸고 싶음
package com.step5;
class ForgetA
{
int ival;
String s = null;
String s1 = new String();
ForgetA()
{
s = new String("나신입");
}
ForgetA(int ival)
{
s = new String("나초보");
}
}
public class Forgets {
public static void main(String[] args) {
System.out.println("main 호출");
String s = null;
ForgetA fa = new ForgetA();
fa.s = "나지환";
System.out.println(fa.s);
//이렇게 하면 nullpointException
System.out.println(fa.s.length());
}
}
--------------------------------------
main 호출
나지환
3
핵심은 NullPointerException
package com.step5;
class ForgetA
{
int ival;
String s = null;
String s1 = new String();
ForgetA()
{
s = new String("나신입");
}
ForgetA(int ival)
{
s = new String("나초보");
}
ForgetA(String name)
{
s = new String(name);
}
}
public class Forgets {
public static void main(String[] args) {
System.out.println("main 호출");
String s = null;
s = "김초보";
ForgetA fa = new ForgetA();
fa.s = "나지환";
System.out.println(fa.s);
//이렇게 하면 nullpointException
System.out.println(fa.s.length());
ForgetA fa1 = new ForgetA(s);
System.out.println(fa1.s);
}
}
---------------------------------------------
main 호출
나지환
3
김초보
핵심은 NullPointerException
package com.step5;
class ForgetA
{
int ival;
String s = null;
String s1 = new String();
ForgetA()
{
s = new String("나신입");
}
ForgetA(int ival)
{
s = new String("나초보");
}
ForgetA(String name)
{
s = new String(name);
}
}
public class Forgets {
public static void main(String[] args) {
System.out.println("main 호출");
String s = null;
s = "";
ForgetA fa = new ForgetA();
fa.s = "나지환";
System.out.println(fa.s);
//이렇게 하면 nullpointException
System.out.println(fa.s.length());
ForgetA fa1 = new ForgetA(s);
System.out.println(fa1.s);
}
}
-------------------------------------------
main 호출
나지환
3
핵심은 NullPointerException
package com.step5;
class ForgetA
{
int ival;
String s = null;
String s1 = new String();
ForgetA()
{
s = new String("나신입");
}
ForgetA(int ival)
{
s = new String("나초보");
}
ForgetA(String name)
{
s = new String(name);
}
}
public class Forgets {
public static void main(String[] args) {
System.out.println("main 호출");
String s = null;
ForgetA fa = new ForgetA();
fa.s = "나지환";
System.out.println(fa.s);
//이렇게 하면 nullpointException
System.out.println(fa.s.length());
ForgetA fa1 = new ForgetA(s);
System.out.println(fa1.s);
}
}
---------------------------------------------
main 호출
나지환
3
Exception in thread "main" java.lang.NullPointerException: Cannot read field "value" because "original" is null
at java.base/java.lang.String.<init>(String.java:260)
at com.step5.ForgetA.<init>(Forgets.java:19)
at com.step5.Forgets.main(Forgets.java:35)
length에 대한 내용
package com.step5;
import java.util.ArrayList;
import java.util.List;
class ForgetC
{
List<Integer> nums = new ArrayList<>();
int ival;
String s = null;
String s1 = new String();
ForgetC()
{
}
ForgetC(int ival)
{
s = new String("나초보입니다.");
}
}
public class ForgetsB {
public static void main(String[] args) {
System.out.println("main 호출");
String s = null;
ForgetC fc = new ForgetC();
fc.s = "나지환";
System.out.println(fc.s.length());
fc = new ForgetC(3);
System.out.println(fc.s.length());
}
}
----------------------------------------
main 호출
3
7
Try-Catch문
package com.step5;
import java.util.ArrayList;
import java.util.List;
class ForgetC
{
List<Integer> nums = new ArrayList<>();
int ival;
String s = null;
String s1 = new String();
ForgetC()
{
}
ForgetC(int ival)
{
s = new String("나초보입니다.");
}
}
public class ForgetsB {
public static void main(String[] args) {
System.out.println("main 호출");
ForgetC fc = new ForgetC();
System.out.println(fc.s.length());
fc = new ForgetC(3);
System.out.println(fc.s.length());
}
}
-------------------------------------
main 호출
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "fc.s" is null
at com.step5.ForgetsB.main(ForgetsB.java:29)
이런 에러가 발생한다. 이런 에러가 발생하지 않도록 하려면 -> Try-Catch문을 사용하여 작성해야한다.
Try-Catch문에 대해서 부족함
package com.step5;
import java.util.ArrayList;
import java.util.List;
class ForgetC
{
List<Integer> nums = new ArrayList<>();
int ival;
String s = null;
String s1 = new String();
ForgetC()
{
}
ForgetC(int ival)
{
s = new String("나초보입니다.");
}
}
public class ForgetsB {
public static void main(String[] args) {
System.out.println("main 호출");
ForgetC fc = new ForgetC();
try
{
System.out.println(fc.s.length());
}
catch(Exception e)
{
System.out.println("NullPointerException : 디폴트 생성자에서는 s에 대한 인스턴스화가 안됐음");
}
;
fc = new ForgetC(3);
System.out.println(fc.s.length());
}
}
-------------------------------------------
main 호출
NullPointerException : 디폴트 생성자에서는 s에 대한 인스턴스화가 안됐음
7
package com.step5;
import java.util.ArrayList;
import java.util.List;
class List1
{
List<Integer> nums = null;
List1()
{
List<Integer> nums = new ArrayList<>();
}
}
public class ListMain1 {
public static void main(String[] args) {
List1 list1 = new List1();
System.out.println(list1.nums.size());
/**
* list1은 Null이 아니다. ->List1 list1 = new List1() 이 부분
* list1.연산자 다음의 nums변수는 전변이다.[지변 x]
* 인스턴스화 하면 nums 지역변수 사용 x
*/
}
}
--------------------------------------------------
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.util.List.size()" because "list1.nums" is null
at com.step5.ListMain1.main(ListMain1.java:26)
/*
* Why? -> List1 생성자에서 num-> List<Integer> nums = new ArrayList<>(); -> 다시 선언했음 복사본이 생김 그렇게 되면 전변은 null
* 그래서 nullpointerexception
*/
NullPointerException 여기서 없애고 싶음
package com.step5;
import java.util.ArrayList;
import java.util.List;
class List1
{
List<Integer> nums = null;
List1()
{
nums = new ArrayList<>();
}
}
public class ListMain1 {
public static void main(String[] args) {
List1 list1 = new List1();
System.out.println(list1.nums.size());
/**
* list1은 Null이 아니다. ->List1 list1 = new List1() 이 부분
* list1.연산자 다음의 nums변수는 전변이다.[지변 x]
* 인스턴스화 하면 nums 지역변수 사용 x
*/
}
}
------------------------------------
0
이렇게도 가능함
package com.step5;
import java.util.ArrayList;
import java.util.List;
class List1
{
List<Integer> nums = null;
List1()
{
List<Integer>nums = new ArrayList<>();
this.nums = nums;
}
}
public class ListMain1 {
public static void main(String[] args) {
List1 list1 = new List1();
System.out.println(list1.nums.size());
/**
* list1은 Null이 아니다. ->List1 list1 = new List1() 이 부분
* list1.연산자 다음의 nums변수는 전변이다.[지변 x]
* 인스턴스화 하면 nums 지역변수 사용 x
*/
}
}
-----------------------------------
0
package com.step5;
import java.util.ArrayList;
import java.util.List;
class List1
{
List<Integer> nums = null;
List1()
{
List<Integer>nums = new ArrayList<>();
}
}
public class ListMain1 {
public static void main(String[] args) {
List1 list1 = new List1();
/**
* list1은 Null이 아니다. ->List1 list1 = new List1() 이 부분
* list1.연산자 다음의 nums변수는 전변이다.[지변 x]
* 인스턴스화 하면 nums 지역변수 사용 x
*/
list1.nums = new ArrayList<>(); // 이렇게도 표현가능
System.out.println(list1.nums.size());
}
}
-----------------------------------
0
package com.mapexam;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.StringTokenizer;
//수정은 기존에 있는 정보를 바꾼다.
//입력은 새로운 정보를 추가한다.
class List4{
List<Integer> rank = new ArrayList<>();//rank.size()=0
void init() {//전역변수의 선언된 깡통에 3가지 정보를 추가하기
rank.add(1);
rank.add(2);
rank.add(3);
}
//List에 등록된 순위를 수정하는 메소드 구현
//사용자로 부터 두 개의 정보를 입력 받아온다.(UI, UX, View계층에서)
boolean rankUpdate(int index, int value) {
boolean isOk = false;
Integer it = rank.set(index, value); // it에 이전에 바꾸기 전 값을 넣음[1,2,3] => 1|3 => x엔(2들어감)
//41번을 경유하는지 아니면 스킵하게 되는 건지 짐작가능함
int x = it;//오토박싱이 제공되고 있어서 원시형 타입과 래퍼클래스 타입사이에 형전환은 자동으로 해줌
System.out.println(x+", " +value); // x => 2 / value => 3
//"1".equals("1")
System.out.println(it == value);
if(it !=null) {
//if(it == value) {//사용자로 부터 받아온 값과 set메소드의 리턴값으로 받아온 값을 비교하기
System.out.println("받아온 값과 수정된 값이 같니?");
isOk = true;
}
return isOk;
}
}
public class ListMain4 {
public static void main(String[] args) {
System.out.println("수정하고자 하는 위치값과 숫자를 입력하시오. 예)위치값|변경할값");
Scanner sc = new Scanner(System.in);//화면을 그리진 않지만 화면이 갖는 효과는 누릴 수 있다.
//2|5 -> index=2, value = 5 3|7 -> index=3, value =7
String user = sc.nextLine();
StringTokenizer st = new StringTokenizer(user, "|");
String imsi = st.nextToken();
int index = Integer.parseInt(imsi);//String -> int 바꿔줘(기능:처리:메소드 힘)
String value = st.nextToken();
int ivalue = Integer.parseInt(value);//String -> int 바꿔줘(기능:처리:메소드 힘)
List4 l4 = new List4();
l4.init();
boolean isOk = l4.rankUpdate(index, ivalue);
if(isOk) {
System.out.println("수정 처리되었습니다.");
System.out.println(l4.rank);//[1,2,3] -> 1|3 -> [1,3,3]
}
else System.out.println("수정 실패하였습니다.");
}
}
-------------------------------------------------------
수정하고자 하는 위치값과 숫자를 입력하시오. 예)위치값|변경할값
1|3
2, 3
false
받아온 값과 수정된 값이 같니?
수정 처리되었습니다.
[1, 3, 3]
package com.mapexam;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.StringTokenizer;
class List5{
//원시형타입에서 참조형(XXXVO, Map)으로 제네릭을 바꾸었다.
List<String> rank = new ArrayList<>();//rank.size()=0
void init() {//전역변수의 선언된 깡통에 3가지 정보를 추가하기
rank.add(0,"나신입");
rank.add(1,"나초보");
rank.add(2,"나일등");
}
boolean rankUpdate(int index, String newValue) {
boolean isOk = false;
boolean isEqual = false;
//oldValue: 기존에 들어있던 값을 담는 변수 선언
//newValue: 새로 들어갈 값을 담을 변수(사용자가 입력한 이름으로 담음)
for(int i=0;i<rank.size();i++) {
//사용자가 입력한 인덱스의 위치값과 rank리스트의 인덱스 값이 같으면 그 자리가 변경할 위치이다.
if(i==index) {
String oldValue = rank.get(index);//그 때 그 위치값이 우리가 비교할 기존에 이름값이다.
System.out.println(oldValue);
if(oldValue.equals(newValue)) {
isEqual = true;
}
}////////// end of if
}/////////////end of for
//문제 - 기존에 값과 같은 값이면 수정처리 하지 않도록 코드를 수정하시오.
if(isEqual) {
System.out.println("기존 이름과 같은 이름을 입력하셨습니다. 다시 확인하세요.");
return false;
}else {
System.out.println("기존 이름과 다른 이름을 입력하셨습니다. 수정을 진행합니다.");
String oldValue = rank.set(index, newValue);
isOk = true;
}
return isOk;
}
}
public class ListMain5 {
public static void main(String[] args) {
System.out.println("수정하고자 하는 위치값과 이름을 입력하시오. 예)위치값|변경할값");
Scanner sc = new Scanner(System.in);//화면을 그리진 않지만 화면이 갖는 효과는 누릴 수 있다.
//2|5 -> index=2, value = 5 3|7 -> index=3, value =7
String user = sc.nextLine();
StringTokenizer st = new StringTokenizer(user, "|");
String imsi = st.nextToken();
int index = Integer.parseInt(imsi);//String -> int 바꿔줘(기능:처리:메소드 힘)
String value = st.nextToken();
List5 l4 = new List5();
l4.init();
boolean isOk = l4.rankUpdate(index, value);
if(isOk) {
System.out.println("수정 처리되었습니다.");
System.out.println(l4.rank);//[1,2,3] -> 1|3 -> [1,3,3]
}
else System.out.println("수정 실패하였습니다.");
}
}
----------------------------------------
수정하고자 하는 위치값과 이름을 입력하시오. 예)위치값|변경할값
1|나초보
나초보
기존 이름과 같은 이름을 입력하셨습니다. 다시 확인하세요.
수정 실패하였습니다.
--------------------------------------------------
수정하고자 하는 위치값과 이름을 입력하시오. 예)위치값|변경할값
1|황궁아파트
나초보
기존 이름과 다른 이름을 입력하셨습니다. 수정을 진행합니다.
수정 처리되었습니다.
[나신입, 황궁아파트, 나일등]
package com.mapexam;
/*
* 제네릭을 VO나 Map으로 선택하는 건 JSON형식에 사전 준비 작업이다.
* 공공포털이나 회사들이 자신들의 서버를 공개하지 않는대신 요청에 대한 검색 결과를 JSON으로 제공한다.
* List<VO> -> JSON, JSON -> List<VO> , List<Map>바꾸어 쓸 수 있다.
입력 - add(element):boolean -> 응답처리시 선택, add(int, element):void -> 응답처리시 부적합
리턴타입이 boolean이라서 처리 결과에 대한 응답을 받아 볼 수 있다(보이지 않는걸 확인해줌)
메소드 선택시 기준이 될 수 있다. - 리턴타입이 있고 없고가 기준에 영향이 있다.
:사용자 정의 메소드를 설계할 때 리턴타입을 반드시 고려 하시오. - 안전한 코드를 작성하기위해
제네릭을 반드시 정한다. - 직관적이다. - 담는 사람도 꺼내는 사람도 기억할 수 없다.
그런데 서비스는 기억(알림설정, 메시지 푸쉬- 서비스)해준다.
수정 - set(int, element):Element(=Object) : 내가 추가한 것을 그대로 반환해준다.
상세보기
전체보기
삭제
*/
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.StringTokenizer;
class List6{
//원시형타입에서 참조형(XXXVO, Map)으로 제네릭을 바꾸었다.
List<String> rank = new ArrayList<>();//rank.size()=0
void init() {//전역변수의 선언된 깡통에 3가지 정보를 추가하기
rank.add(0,"나신입");
rank.add(1,"나초보");
rank.add(2,"나일등");
}
boolean rankDelete(String delValue) {
boolean isOk = false;
//insert here
isOk = rank.remove(delValue);
return isOk;
}
}
public class ListMain6 {
public static void main(String[] args) {
System.out.println("삭제하고자 하는 이름을 입력하시오.");
Scanner sc = new Scanner(System.in);//화면을 그리진 않지만 화면이 갖는 효과는 누릴 수 있다.
String value = sc.nextLine();
List6 l4 = new List6();
l4.init();
boolean isOk = l4.rankDelete(value);
if(isOk) {
System.out.println("삭제 처리되었습니다.");
System.out.println(l4.rank);//[1,2,3] -> 1|3 -> [1,3,3]
}
else System.out.println("삭제 실패하였습니다.");
}
}
----------------------------------
삭제하고자 하는 이름을 입력하시오.
나초보
삭제 처리되었습니다.
[나신입, 나일등]
package com.baseballgameClassDiv;
import java.util.ArrayList;
import java.util.List;
public class asdasd {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
boolean isOk = list.add("지환");
System.out.println(isOk);
System.out.println(list);
boolean isOk1 = list.remove("지환");
System.out.println(list);
}
}
------------------------------------------
true
[지환]
[]
package com.mapexam;
/*
* 제네릭을 VO나 Map으로 선택하는 건 JSON형식에 사전 준비 작업이다.
* 공공포털이나 회사들이 자신들의 서버를 공개하지 않는대신 요청에 대한 검색 결과를 JSON으로 제공한다.
* List<VO> -> JSON, JSON -> List<VO> , List<Map>바꾸어 쓸 수 있다.
입력 - add(element):boolean -> 응답처리시 선택, add(int, element):void -> 응답처리시 부적합
리턴타입이 boolean이라서 처리 결과에 대한 응답을 받아 볼 수 있다(보이지 않는걸 확인해줌)
메소드 선택시 기준이 될 수 있다. - 리턴타입이 있고 없고가 기준에 영향이 있다.
:사용자 정의 메소드를 설계할 때 리턴타입을 반드시 고려 하시오. - 안전한 코드를 작성하기위해
제네릭을 반드시 정한다. - 직관적이다. - 담는 사람도 꺼내는 사람도 기억할 수 없다.
그런데 서비스는 기억(알림설정, 메시지 푸쉬- 서비스)해준다.
수정 - set(int, element):Element(=Object) : 내가 추가한 것을 그대로 반환해준다.
상세보기
전체보기
삭제
*/
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.StringTokenizer;
class List7{
//원시형타입에서 참조형(XXXVO, Map)으로 제네릭을 바꾸었다.
List<String> rank = new ArrayList<>();//rank.size()=0
void init() {//전역변수의 선언된 깡통에 3가지 정보를 추가하기
rank.add(0,"나신입");
rank.add(1,"나초보");
rank.add(2,"나일등");
//rank.add(3,"입력한 이름");
}
//아래 코드가 실행되면
boolean rankInsert(String newName) {
boolean isOk = false;
//insert here
isOk = rank.add(newName);
return isOk;
}
}
public class ListMain7 {
public static void main(String[] args) {
System.out.println("추가하고자 하는 이름을 입력하시오.");
Scanner sc = new Scanner(System.in);//화면을 그리진 않지만 화면이 갖는 효과는 누릴 수 있다.
String value = sc.nextLine();
List7 l4 = new List7();
l4.init();
boolean isOk = l4.rankInsert(value);
if(isOk) {
System.out.println("추가 처리되었습니다.");
System.out.println(l4.rank);//[1,2,3] -> 1|3 -> [1,3,3]
}
else System.out.println("추가 실패하였습니다.");
}
}
-----------------------------------------
추가하고자 하는 이름을 입력하시오.
오지환
추가 처리되었습니다.
[나신입, 나초보, 나일등, 오지환]
package com.mapexam;
/*
* 제네릭을 VO나 Map으로 선택하는 건 JSON형식에 사전 준비 작업이다.
* 공공포털이나 회사들이 자신들의 서버를 공개하지 않는대신 요청에 대한 검색 결과를 JSON으로 제공한다.
* List<VO> -> JSON, JSON -> List<VO> , List<Map>바꾸어 쓸 수 있다.
입력 - add(element):boolean -> 응답처리시 선택, add(int, element):void -> 응답처리시 부적합
리턴타입이 boolean이라서 처리 결과에 대한 응답을 받아 볼 수 있다(보이지 않는걸 확인해줌)
메소드 선택시 기준이 될 수 있다. - 리턴타입이 있고 없고가 기준에 영향이 있다.
:사용자 정의 메소드를 설계할 때 리턴타입을 반드시 고려 하시오. - 안전한 코드를 작성하기위해
제네릭을 반드시 정한다. - 직관적이다. - 담는 사람도 꺼내는 사람도 기억할 수 없다.
그런데 서비스는 기억(알림설정, 메시지 푸쉬- 서비스)해준다.
수정 - set(int, element):Element(=Object) : 내가 추가한 것을 그대로 반환해준다.
상세보기
전체보기
삭제
*/
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.StringTokenizer;
class List9{
//원시형타입에서 참조형(XXXVO, Map)으로 제네릭을 바꾸었다.
List<String> rank = new ArrayList<>();//rank.size()=0
void init() {//전역변수의 선언된 깡통에 3가지 정보를 추가하기
rank.add(0,"나신입");
rank.add(1,"나초보");
rank.add(2,"나일등");
//rank.add(3,"입력한 이름");
}
//아래 코드가 실행되면
//전역변수이면 어차피 동기화가 된다. - 하나이다 - static
//단 최초에는 빈통이니까 3명의 명단을 출력하려면 init()경유시킬것.- 전처리 - 출력전에 먼저 init()호출 할것.
void rankSelect() {//형 왜 리턴타입을 void로 바꾸는 건가요? - 전역변수이잖아
System.out.println(rank);
}
//자료구조에 들어있는 값을 순회하는데 get(int)메소드의 리턴타입이 Element인 것을
//사용자 정의메소드를 구현하여서 굳이 리턴타입을 boolean으로 바꾸어본다.(if문 복습하기)
//한건 조회하기 -> 조건식이 필요하니까 파라미터가 필요하고 전체 조회일땐 있는 거 모두 출력이니까 파라미터가 필요없잖아
boolean rankDetail(int index) {
boolean isOk = false;
String name = null;
//insert here
name = rank.get(index);
System.out.println("찾는 이름은 "+name+" 입니다.");
if(name!=null) {
isOk = true;
}
return isOk;
}
}
public class ListMain9 {
public static void main(String[] args) {
System.out.println("전체조회 1번을 입력하고 상세조회이면 2번을 입력하시오.");
Scanner sc = new Scanner(System.in);//화면을 그리진 않지만 화면이 갖는 효과는 누릴 수 있다.
List9 l4 = new List9();
l4.init();
//for(int i=0;i<5;i++) {
while(true) {
String menu = "-1";//-1 : End of file
menu = sc.nextLine();
if("1".equals(menu)) {
System.out.println("1번 전체조회를 선택하셨습니다.");
l4.rankSelect();
//return;//메인메소드를 빠져나간다.
continue;
}
else if("2".equals(menu)) {
System.out.println("2번 상세조회를 선택하셨습니다.");
System.out.println("상세조회를 원하는 번호를 입력하세요.");
String user = sc.nextLine();
System.out.println("상세보기를 원하는 번호는 "+user + " 입니다.");
int index = Integer.parseInt(user);
if(index>=0) {
l4.rankDetail(index);
}
//return;
continue;
}
else if("q".equals(menu)) {
//return;
System.out.println("프로그램을 종료합니다.\n");
System.exit(0);
}
}
}//////////// end of main
}/////////////// end of ListMain8
-------------------------------------
전체조회 1번을 입력하고 상세조회이면 2번을 입력하시오.
1
1번 전체조회를 선택하셨습니다.
[나신입, 나초보, 나일등]
----------------------------------------
전체조회 1번을 입력하고 상세조회이면 2번을 입력하시오.
2
2번 상세조회를 선택하셨습니다.
상세조회를 원하는 번호를 입력하세요.
1
상세보기를 원하는 번호는 1 입니다.
찾는 이름은 나초보 입니다.
해당 부분 복습
package com.mapexam;
import java.util.HashMap;
import java.util.Map;
class Map1{
Map<String, Object>map = new HashMap<>();
Map1()
{
map.put("1", 1);
System.out.println(map.containsKey("1"));
System.out.println(map.size());
}
Map1(int i)
{
map = new HashMap<>(); // 새로운 객체를 생성함-복제본이다.
//map.size()=0 map에 대한 추가는 일어나지 않았다.
System.out.println(map.size());
}
}
public class MapMain1 {
public static void main(String[] args) {
Map1 map1 = new Map1();
Map1 map2 = new Map1(2);
}
}
----------------------------------------------
true
1
0
map 안에 저장되어있는 "1"를 꺼내라.
package com.mapexam;
import java.util.HashMap;
import java.util.Map;
class Map2{
Map<String, CustomerVO>map = new HashMap<>();
Map2()
{
CustomerVO cvo = new CustomerVO(13,"오지환","김철스");
map.put("1", cvo);
System.out.println(map.size());
}
Map2(int i)
{
map = new HashMap<>(); // 새로운 객체를 생성함-복제본이다.
//map.size()=0 map에 대한 추가는 일어나지 않았다.
System.out.println(map.size());
}
}
public class MapMain2 {
public static void main(String[] args) {
Map2 m = new Map2();
/*
* map 안에 저장되어있는 "1"를 꺼내라.
*/
}
}
여기서 - m.map.get("1")이렇게 입력하게 된다면, 주소번지가 찍힌다. -> 그 map.get에 대한 id를 주세요
package com.mapexam;
import java.util.HashMap;
import java.util.Map;
class Map2{
Map<String, CustomerVO>map = new HashMap<>();
Map2()
{
CustomerVO cvo = new CustomerVO(1,"오지환","1997-09-20");
map.put("1", cvo);
cvo = new CustomerVO(2,"김철수","1998-09-20");
map.put("2", cvo);
System.out.println(map.size());
System.out.println("======================================");
}
Map2(int i)
{
map = new HashMap<>(); // 새로운 객체를 생성함-복제본이다.
//map.size()=0 map에 대한 추가는 일어나지 않았다.
System.out.println(map.size());
}
}
public class MapMain2 {
public static void main(String[] args) {
Map2 m = new Map2();
/*
* map 안에 저장되어있는 "1"를 꺼내라.
*/
CustomerVO cvo = m.map.get("1");
System.out.println(cvo.getC_name());
System.out.println(cvo.getC_id());
System.out.println("===========================");
System.out.println(m.map.get("1"));
System.out.println(m.map.get("1").getC_id());
System.out.println(m.map.get("1").getC_name());
System.out.println(m.map.get("1").getC_birthday());
System.out.println("===========================");
cvo = m.map.get("2");
System.out.println(m.map.get("2")); // 2번 키에 대한 방주소
System.out.println(m.map.get("2").getC_name());
System.out.println(m.map.get("2").getC_id());
System.out.println(m.map.get("2").getC_birthday());
}
}
----------------------------------------------
2
======================================
오지환
1
===========================
com.mapexam.CustomerVO@2f92e0f4
1
오지환
1997-09-20
===========================
com.mapexam.CustomerVO@28a418fc
김철수
2
1998-09-20
package com.mapexam;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MapMain3 {
Map<String,List<Map<String,CustomerVO>>> map = new HashMap<>();
public static void main(String[] args) {
//초기화를 진행해라
// 수정해라
// 삭제해라
// 접근해라
// 출력해라
}
}
package com.mapexam;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
class Map3
{
Map<String,List<Map<String,CustomerVO>>> outermap = new HashMap<>();
Map3()
{
List<Map<String,CustomerVO>> list = new ArrayList<>();
Map<String,CustomerVO> innermap = new HashMap<>();
CustomerVO cvo = new CustomerVO(13, "나초보", "1997-090-08");
innermap.put("1", cvo);
list.add(innermap);
outermap.put("outer", list);
}
}
/**
*
* { } 찍히면 맵
* [ ] 리스트
* 주소번지 : VO
*/
public class MapMain3 {
public static void main(String[] args) {
Map3 m3 = new Map3();
System.out.println(m3.outermap.get("outer"));
System.out.println(m3.outermap.get("outer") instanceof List);
System.out.println(m3.outermap.get("outer").get(0).get("1").getC_id());
System.out.println(m3.outermap.get("outer").get(0).get("1").getC_name());
System.out.println(m3.outermap.get("outer").get(0).get("1").getC_birthday());
}
}
----------------------------------------------------
[{1=com.mapexam.CustomerVO@2f92e0f4}]
true
13
나초보
1997-090-08