공부의 기록/자바 풀 스택 : 수업내용정리

자바 풀 스택 12/23 오후 기록 023-2

파티피플지선 2024. 12. 23. 18:22

<14:30 5교시>

package test.main;

import java.util.HashMap;

public class MainClass07 {
	public static void main(String[] args) {
		/*
		 * HashMap<key type, value type>
		 * 
		 * key type은 일반적으로 String type을 가장 많이 사용함
		 * value type은 담고 싶은 데이터의 type을 고려해서 저장하면 됨
		 * value type을 object로 지정하면 어떤 데이타타입이던지 다 담을 수 있음
		 * 순서가 없는 데이터를 다룰 때 사용하면 됨
		 * dto클래스 대신에 사용하기도 함
		 */
		HashMap<String, Object> map=new HashMap<>();
		map.put("num",1);
		map.put("name", "김구라");
		map.put("isMan", true);

		//value의 generic 클래스가 Object 이기 때문에 object 타입이 리턴된다.
		int num=(int)map.get("num");//원래 타입으로 캐스팅이 필요
		String name =(String)map.get("name");
		boolean isMan = (boolean)map.get("isMan");

		//동일한 key 값으로 다시 담으면 수정
		map.put("name", "이정호" );
		//특정 key 값으로 담긴 내용 삭제
		map.remove("isMan");
		//모두 삭제
		map.clear();
	}
}

 

 

package test.main;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class MainClass08 {
	public static void main(String[] args) {
		//hashmap 객체를 생성해서 map 인터페이스 타입 변수에 담기
		Map<String, String> dic = new HashMap<>();
		//key:value의 쌍을 사전형태(dictionary)라고도 함
		dic.put("house", "집");
		dic.put("phone", "전화기");
		dic.put("watch", "시계");
		
		Scanner scan = new Scanner(System.in);
		System.out.println("단어입력:");
		String word=scan.nextLine();
		
		//단어에 해당하는 뜻 얻어내기
		String mean=dic.get(word);
		if (mean==null) {
			System.out.println("찾는 단어가 없습니다.");
		}else {
		//출력하기
		System.out.println(word+"의 뜻은 " +mean+"입니다.");
		}
		
		
	}
}

 

 

예제

//1. 세명의 회원정보(번호,이름,주소)를 해쉬맵 객체를 생성해서 담아보세요

//HashMap 객체 하나당 한명의 회원정보를 담으니깐 총 3개의 Hashmap 객체가 생성돼야 함.

//2. 위에서 생성한 HashMap 객체를 담을 ArrayList 객체를 생성해보세요

//3. ArryList 객체에 Hashmap 객체 3개를 담아보세요

//4. 반복문 돌면서 ArrayList에 담긴 회원정보를 콘솔창에 보기 좋게 출력해보세요.

 

 

<15:30 6교시>

으어억 졸려 살려줘

간신히 잠깨서 예제 답 따라 했다... 휴.. 오늘은 집가면서 다시보고 공부해야겠다..

package test.main;

import java.util.HashSet;
import java.util.Set;

/*
 * HashSet은 Set 인터페이스를 구현한 클래스이다
 * -순서가 없다
 * -key값도 없다
 * -중복을 허용하지 않는다
 * -어떤 data를 묶음(집합)으로 관리하고자 할 때 사용한다
 */
public class MainClass10 {
	public static void main(String[] args) {
		//정수를 저장할 수 있는 hashset 객체를 생성해서 참조값을 set 인터페이스 type 지역변수에 담기
		Set<Integer> set1=new HashSet<>();
		set1.add(10);
		set1.add(20);
		set1.add(20);
		set1.add(30);
		set1.add(30);
		
		//문자열을 저장할 수 있는 HashSet 객체
		Set<String> set2=new HashSet<>();
		set2.add("kim");
		set2.add("lee");
		set2.add("park");
		set2.add("lee");
		set2.add("park");
		
		//set 객체에 저장된 모든 아이템을 순서를 보장할 수는 없지만 모두 참조해서 사용해보기
		set1.forEach((item)->{System.out.println(item);});
		
		System.out.println("------1번구간-----");
		set2.forEach((item)->{System.out.println(item);});
		
		//특정 item(데이터, 참조값) 존재 여부 알아내기
		boolean isContain=set2.contains("lee");
		//저장된 item의 갯수
		int size = set2.size();
		//특정 item의 삭제
		set2.remove("park");
		//모든 item 삭제
		set2.clear();
		
		
		
	}
}

 

 

package test.main;

import java.util.ArrayList;
import java.util.List;

public class MainClass11 {
	public static void main(String[] args) {
		List<Integer> nums=new ArrayList<>();
		nums.add(10);
		nums.add(20);
		nums.add(30);
		
		//readonly로 사용할거라면 위의 세줄을 아래와 같이 사용할 수도 있다.
		
		List<Integer> nums2=List.of(10,20,30);
		//nums2.add(40); //아이템 추가 불가
		//nums2.remove(0);//삭제 불가
		//nums2.set(0,999);//수정 불가
	}
}

 

package test.main;

import java.util.HashMap;
import java.util.Map;

public class MainClass12 {
	public static void main(String[] args) {
		Map<String, String> map1 = new HashMap<>();
		map1.put("house", "집");
		map1.put("phone", "전화기");
		map1.put("watch", "시계");
		
		Map<String, String> map2= Map.of("house", "집", "phone", "전화기", "watch", "시계");
		
		// map2.put("mouse", "쥐");//추가 불가
		// map2.remove("watch"); // 삭제 불가
	}
}

 

 

package test.main;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class MainClass13 {
	public static void main(String[] args) {
		Set<Integer> set= new HashSet<>();
		set.add(10);
		set.add(10);
		set.add(20);
		set.add(20);
		set.add(30);
		set.add(20);
		set.add(40);
		
		//중복이 제거된 Set를 ArrayList 객체의 생성자에 전달해서 객체 생성하기
		List<Integer> list=new ArrayList<>(set);
		//저장된 숫자를 오름차순으로 정렬
		Collections.sort(list);
		//내림 차순 정렬
		//Collections.sort(list, Collections.reverseOrder());
		
		list.forEach((item)->{System.out.println(item);});
	}
}

 

<16:30 7교시>

그동안 배운거 활용해서 퀴즈 풀어보기

는 1번 빼고 하나도 못했다...

Random 객체 생성하기 까먹고 나니까 오늘 간신히 따라한거 적용하기도 어렵더라.

내가 

package test.main;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;

public class QuizMain {
	public static void main(String[] args) {
		//1. 정수를 담을 수 있는 어레이 리스트 객체를 생성해서 nums 라는 지역변수에 담기
			ArrayList<Integer> nums = new ArrayList<>();
		//2. 반복문 10번 돌면서 1~100 사이의 랜덤한 정수를 각각 얻어내서 1에서 생성한 nums 객체에 순서대로 담기
			//랜덤한 정수를 얻어낼 객체
			Random ran = new Random();
			//반복문을 10번돌도록 구성
			for (int i=0; i<10;i++) {
				//1~100 사이의 랜덤한 정수 얻기
				int ranNum= ran.nextInt(100)+1;
				nums.add(ranNum);
			}
		
		//3. nums에 저장된 숫자에서 중복된 숫자가 제거된 새로운 ArrayList 객체를 얻어내 보기
			/*Set<Integer> set= new HashSet<>();
			//set 객체에 숫자를 넣으면 중복이 제거된다
			nums.forEach((item)->{set.add(item);});
			//중복이 제거된 Set를 이용해서 다시 arraylist 객체 생성
			List<Integer> result=new ArrayList<>(set);*/
			Set<Integer> set= new HashSet<>(nums);
			List<Integer> result=new ArrayList<>(set);
		//4. 새로운 배열에 숫자를 오름차순으로 정렬해보기
			Collections.sort(result);
		//5. 새로운 배열에 저장된 숫자를 순서대로 콘솔창에 출력해보기
			result.forEach((item)->{System.out.println(item);});
	}
}

 

로또 번호 생성기 ㅋㅋ

package test.main;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;

public class QuizMain2 {
	public static void main(String[] args) {
		//1. 로또 번호 담을 HashSet 객체 생성해서 set1이라는 지역 변수에 담기
		Set<Integer> set1 = new HashSet<>();
		//2. while 문을 이용해서 랜덤한 로또 번호를 set1에 반복적으로 담아 보세요.
		//while문 탈출 조건은 set1.size()가 6이 되면 탈출되도록 해보기
		Random ranlot = new Random();
		while (true) {
			for(int i=0; i<set1.size(); i++) {
				//1~45 사이의 랜덤한 숫자를 얻어서
				int nums =ranlot.nextInt(45)+1;
				//Set 객체에 담는다
				set1.add(nums);	
			}
			//만일 Set의 크기가 6이면 
			if (set1.size()==6) {
				break;//반복문 탈출
				
			}
		}
		
		//3. set1에 담긴 번호를 오름 차순으로 정렬해서 콘솔창에 모두 출력해보세요
		List<Integer> number = new ArrayList<>(set1);
		Collections.sort(number);
		for(Integer tmp:number) {
			System.out.println(tmp);
		}
		
		
	}
}

 

<17:30 8교시> 

예제 풀기

* 1. test.mypac.PostDto 클래스를 만들어 보세요

* PostDto 에는 글번호, 작성자, 제목을 담을수 있어야 합니다.

* 즉 3개의 필드를 만드세요

* 필드명은 마음데로, 필드의 data type 은 잘 생각해서 결정

* dto 작성 규약에 맞게 만들어 주세요( eclipse generate 기능 활용)

* test.mypac 페키지에 만들기

*

* 2. PostDto 객체에 임의의 글 3개의 정보를 담아 보세요.

* 총 3개의 PostDto 객체가 생성이 되어야 합니다.

*

* 3. PostDto 객체를 담을수 있는 ArrayList 객체를 생성해서 위에서 생성한 PostDto

* 객체를 ArrayList 에 담아 보세요.

*

* 4. 반복문 돌면서 ArrayList 에 담긴 글 목록을 콘솔창에 이쁘게 출력해 보세요.

*

 

일단 맨땅에 헤딩해보기

package test.mypac;

public class PostDto {
	
	private int num;
	private String writer;
	private String title;
	
	public PostDto() {}
	
	public PostDto(int num, String writer, String title) {
		this.num=num;
		this.writer=writer;
		this.title=title;
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public String getWriter() {
		return writer;
	}

	public void setWriter(String writer) {
		this.writer = writer;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}
	
	
	
	
}