java

brave_chicken·2024년 3월 30일

잇(IT)생 챌린지

목록 보기
15/90

ArrayListExam03

<출력형태>
번호 설명 국어 수학 영어 총점 평균

1 장동건 100 99 80
2 이민호 89 100 100
3 김범룡 95 89 100

  1. 1, 2, 3번의 모든 데이터를 어레이리스트에 저장(ArrayList<ArrayList>)
  2. 위 형식으로 출력하기
  3. 제목은 sysout으로 출력
  4. ArrayList에는 학생들의 정보만 저장
  5. 총점과 평균은 출력할때 추가하기
public class ArrayListExam03 {
	public static void main(String[] args) {
		ArrayList<ArrayList<String>> lists = new ArrayList<>();
		ArrayList<String> list1 = new ArrayList<>();
		ArrayList<String> list2 = new ArrayList<>();
		ArrayList<String> list3 = new ArrayList<>();
		list1.add("1");
		list1.add("장동건");
		list1.add("100");
		list1.add("99");
		list1.add("80");
		list2.add("2");
		list2.add("이민호");
		list2.add("89");
		list2.add("100");
		list2.add("100");
		list3.add("3");
		list3.add("김범룡");
		list3.add("95");
		list3.add("89");
		list3.add("100");
		lists.add(list1);
		lists.add(list2);
		lists.add(list3);
		
		System.out.println("번호\t성명\t국어\t수학\t영어\t총점\t평균");
		for(ArrayList<String> list:lists) {
			for(String that:list) {
				System.out.print(that+"\t");
			}
			int sum = 0;
			for(int i=2;i<=4;i++) {
				sum = sum + Integer.parseInt(list.get(i));
			}
			System.out.print(sum+"\t");
			System.out.print((double)sum/3+"\t");
			System.out.println();
		}
	}
}

StudentDTO

  • DTO클래스,VO클래스,도메인,엔티티 = 각각 다른 내용
  • DTO패턴은 DB에 저장되어있는 데이터를 오브젝트로 변환해서 작업
  • 계층간에 데이터를 전송하기 위해 사용
public class StudentDTO {
	private int num;
	private String name;
	private int kor;
	private int math;
	private int eng;
	private Date regdate;
	
	public StudentDTO() {}
	public StudentDTO(int num, String name, int kor, int math, int eng) {
		super();
		this.num = num;
		this.name = name;
		this.kor = kor;
		this.math = math;
		this.eng = eng;
		this.regdate = new Date();//현재시간정보셋팅, 멤버변수는 초기값 널이고, 객체를 만들어서 호출할수있게..
	}
	public StudentDTO(int num, String name, int kor, int math, int eng, Date regdate) {
		super();
		this.num = num;
		this.name = name;
		this.kor = kor;
		this.math = math;
		this.eng = eng;
		this.regdate = regdate;//현재시간정보셋팅
	}

	@Override
	public String toString() {
		return "StudentDTO [num=" + num + ", name=" + name + ", kor=" + kor + ", math=" + math + ", eng=" + eng
				+ ", regdate=" + regdate + "]";
	}
                                 
	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 int getKor() {
		return kor;
	}
	public void setKor(int kor) {
		this.kor = kor;
	}
	public int getMath() {
		return math;
	}
	public void setMath(int math) {
		this.math = math;
	}
	public int getEng() {
		return eng;
	}
	public void setEng(int eng) {
		this.eng = eng;
	}
	public Date getRegdate() {
		return regdate;
	}
	public void setRegdate(Date regdate) {
		this.regdate = regdate;
	}
}

ArrayListExam03_DTO

  • StudentDTO사용해서 ArrayListExam03만들기
public class ArrayListExam03_DTO {
	public static void main(String[] args) {
		ArrayList<StudentDTO> lists = new ArrayList<>();
		
		StudentDTO student1 = new StudentDTO(1,"장동건",100,99,88);
		StudentDTO student2 = new StudentDTO(2,"이민호",89,100,100);
		StudentDTO student3 = new StudentDTO(3,"김범룡",95,89,100);
		
		lists.add(student1);
		lists.add(student2);
		lists.add(student3);
		
		System.out.println("번호\t성명\t국어\t수학\t영어\t총점\t평균");
		
		for(StudentDTO student:lists) {
			System.out.print(student.getNum()+"\t"+student.getName()+"\t"+student.getKor()+"\t"+student.getMath()+"\t"+student.getEng());
			int sum = student.getKor()+student.getMath()+student.getEng();
			System.out.println("\t"+sum+"\t"+(sum/3));
		}
	}
}

BoardExam/BoardDTO

  • 번호, 제목, 내용, 작성자, 날짜가 저장되도록 BoardDTO를 만들고 ArrayList에 데이터를 저장하고 출력 될 수 있도록 코드를 작성하세요
package api.util;

import java.util.Date;

public class BoardDTO {
	private int number;
	private String title;
	private String content;
	private String name;
	private Date day;
	
	public BoardDTO() {}
	public BoardDTO(int number, String title, String content, String name) {
		super();
		this.number = number;
		this.title = title;
		this.content = content;
		this.name = name;
		this.day = new Date();
	}
	public BoardDTO(int number, String title, String content, String name, Date day) {
		super();
		this.number = number;
		this.title = title;
		this.content = content;
		this.name = name;
		this.day = day;
	}
	@Override
	public String toString() {
		return "BoardDTOExam [number=" + number + ", title=" + title + ", content=" + content + ", name=" + name
				+ ", day=" + day + "]";
	}
	public int getNumber() {
		return number;
	}
	public void setNumber(int number) {
		this.number = number;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getDay() {
		return day;
	}
	public void setDay(Date day) {
		this.day = day;
	} 
}
package api.util;

import java.util.ArrayList;

public class BoardExam {

	public static void main(String[] args) {
		ArrayList<BoardDTO> list = new ArrayList<>();
		
		BoardDTO person1 = new BoardDTO(1,"안녕하세요","허각입니다","허각");
		BoardDTO person2 = new BoardDTO(2,"안녕하세요","폴킴입니다","폴킴");
		BoardDTO person3 = new BoardDTO(3,"안녕하세요","나비입니다","나비");
		list.add(person1);
		list.add(person2);
		list.add(person3);
		
		System.out.println("번호\t제목\t내용\t작성자\t날짜");
		for(BoardDTO p:list) {
			System.out.println(p.getNumber()+"\t"+p.getTitle()+"\t"+p.getContent()+"\t"+p.getName()+"\t"+p.getDay());
		}
	}
}

HashSetTest01

iterator, hashnext(),nest()설명

package api.util;

import java.util.HashSet;
import java.util.Iterator;

public class HashSetTest01 {
	public static void main(String[] args) {
		//1. HashSet생성
		HashSet<String> set = new HashSet<>();
		
		//2. HashSet에 데이터 추가
		set.add("자바");
		set.add("자바");
		set.add("스프링");
		set.add("자바스크립트");
		set.add("노드");
		set.add("프론트");
		
		//3.set에 저장된 요소의 갯수 =>(중복이 안되기때문에 똑같은 문자 여러개 집어넣으면 한개로 나옴)
		System.out.println(set.size());
		System.out.println(set.contains("스프링"));
		System.out.println("======================================");
		//4. 모든 데이터를 출력하기(기본)..입력한 순서대로 출력되지는 않음
		for(String data:set) {
			System.out.println(data);
		}
		System.out.println("======================================");
		//4-1. 모든 데이터를 출력하기(표준인터페이스를 이용해서 작업)
		//순서가 있는 자료구조가 아니므로 자바 내부에서 제공되는 표준인터페이스로 변경하고 작업(추출전용인터페이스)
//		구조가 다 다른(셋,맵,키) 데이터를 통일된 타입으로 변경할 수 있게하는게 Iterator
//		1) HashSet을 Iterator로 변환하기 
//		  Iterator :  추출전용인터페이스
		Iterator<String> it = set.iterator();
//		2) Iterator에 저장된 HashSet데이터들을 출력하기
		while(it.hasNext()) {//Iterator에 데이터가 있는지 여부를 확인
			//데이터를 꺼내기
			String data = it.next();
			System.out.println(data);
		}
		System.out.println("======================================");
		set.remove("스프링");
		System.out.println(set.size());
	}
}

HashSetTest02/ 합집합, 교집합

hashset 집합

package api.util;

import java.util.HashSet;

//합집합과 교집합
public class HashSetTest02 {
	public static void main(String[] args) {
		HashSet<String> set1 = new HashSet<>();
		set1.add("java");
		set1.add("mysql");
		set1.add("servlet");
		set1.add("jdbc");
		set1.add("jsp");
		set1.add("spring");
		set1.add("css");
		print(set1);
		//합집합 -Set을 생성할때 매개변수로 다른 Set(합집합을 하기 위한 Set)을 넘기기
		HashSet<String> set2 = new HashSet<>(set1);
		set2.add("haddop");
		set2.add("spark");
		set2.add("karfka");
		print(set2);
		
		HashSet<String> set3 = new HashSet<>();
		set3.add("java");
		set3.add("servlet");
		set3.add("python");
		set3.add("Raspberry PI");
		print(set3);
		System.out.println("set1과 set3의 교집합");
		//교집합을 하게 되면 교집합이 set3에 새로 셋팅된다.
		set3.retainAll(set1);
		print(set3);
		System.out.println("set1과 set3의 합집합");
		set1.addAll(set3);
		print(set1);
	}
	public static void print(HashSet<String> set) {
		for(String data:set) {
			System.out.println(data);
		}
		System.out.println("-------------");
	}
}

hashset 교집합 합집합 연습

public class practice {
	public static void main(String[] args) {
		HashSet<String> aus = new HashSet<>();
		aus.add("Sydney");
		aus.add("Brisbane");
		aus.add("Perth");
		aus.add("Melbourne");
		print(aus);
		
		HashSet<String> us = new HashSet<>();
		us.add("Newyork");
		us.add("Houstin");
		us.add("LA");
		us.add("Sandiago");
		print(us);
		
		aus.addAll(us);
		print(aus);
		
		HashSet<String> wantgo = new HashSet<>();
		wantgo.add("Sydney");
		wantgo.add("Perth");
		wantgo.add("LA");
		wantgo.add("Newyork");
		
		us.retainAll(wantgo);
		print(us);
		
		HashSet<String> next = new HashSet<>(aus);
		next.add("Italy");
		next.add("Bankok");
		
		print(next);
	}
	public static void print(HashSet<String> set) {
		for(String data:set) {
			System.out.println(data);
		}
		System.out.println("----------");
	}
}

HashMapTest

Map: key와 value를 저장하기 위해서 사용

  • key value에 대한 모든 타입을 정의하고 작업하기
  • servlet과 jsp 내부에서 사용하는 데이터 저장구조가 모두 Map구조
  • 맵은 순서가 없는 자료구조, 키의 값으로 저장될 위치를 계산해서 저장하므로 데이터를 추출하는 경우 순서대로 나오지 않는다.
  • key만 다르면 value는 똑같아도됨
public class HashMapTest {
	public static void main(String[] args) {
		//해시맵 생성 HashMap<key, vlaue>
		HashMap<String, Integer> map = new HashMap<>();
		
		//데이터 저장하기
		map.put("a01", 1000);
		map.put("a02", 2000);
		map.put("a03", 3000);
		map.put("a04", 4000);
		map.put("a05", 4000);
		map.put("a06", 6000);
		map.put("a06", 7000);
  		//똑같은 key를 주면 value는 덮어씀
		//key는 중복될수없다. 동일한 key를 정의하고 put하면 해당 key에 대한 vlaue가 업데이트된다.
		
		//사이즈
		System.out.println(map.size());
		System.out.println("--------------------");
		//값출력하기, 겟메소드는 특정 키를 주면 밸류가 나옴
		System.out.println(map.get("a04"));
		System.out.println(map.get("a06"));//덮어쓴거 확인
		System.out.println("--------------------");
		
  		//Map에 저장된 모든 데이터 꺼내기
		//1.모든 키를 추출
		Set<String>keylist = map.keySet();
		
		//2.키를이용해서 밸류를 꺼내기//정해진 순서랄게 없이 막나옴
		for(String key : keylist) {
			System.out.println(map.get(key));
		}
		System.out.println("--------------------");
	}
}

연습

FinalExam/ arraylist, hashset, hashmap연습

public class FinalExam {
	public static void main(String[] args) {
		ArrayList<StudentDTO> list = new ArrayList<>();
		StudentDTO list1 = new StudentDTO(1,"장동건",100,99,88);
		StudentDTO list2 = new StudentDTO(2,"이민호",89,100,100);
		StudentDTO list3 = new StudentDTO(3,"김범룡",95,89,100);	
		
		list.add(list1);
		list.add(list2);
		list.add(list3);
		
		print(list);
		
		HashSet<StudentDTO> lists = new HashSet<>();
		lists.addAll(list);
		print(lists);
		
		HashMap<Integer, StudentDTO> listm = new HashMap<>(); 
		listm.put(1, list1);
		listm.put(2, list2);
		listm.put(3, list3);
		print(listm);
		
		
	}
	public static void print(ArrayList<StudentDTO> list) {
		System.out.println("번호\t이름\t국어\t수학\t영어\t총점\t평균");
		for(StudentDTO data:list) {
			System.out.print(data.getNum()+"\t"+data.getName()+"\t"+data.getKor()+"\t"+data.getMath()+"\t"+data.getEng());
			double sum = data.getKor()+data.getMath()+data.getEng();
			System.out.println("\t"+sum+"\t"+sum/3);
		}
	}
	public static void print(HashSet<StudentDTO> lists) {
		System.out.println("번호\t이름\t국어\t수학\t영어\t총점\t평균");
		//둘다 가능
		Iterator<StudentDTO> it = lists.iterator();
		while(it.hasNext()) {
			StudentDTO data = it.next();
			System.out.print(data.getNum()+"\t"+data.getName()+"\t"+data.getKor()+"\t"+data.getMath()+"\t"+data.getEng());
			double sum = data.getKor()+data.getMath()+data.getEng();
			System.out.println("\t"+sum+"\t"+sum/3);
		}
		for(StudentDTO data:lists) {
			System.out.print(data.getNum()+"\t"+data.getName()+"\t"+data.getKor()+"\t"+data.getMath()+"\t"+data.getEng());
			double sum = data.getKor()+data.getMath()+data.getEng();
			System.out.println("\t"+sum+"\t"+sum/3);
		}
	}
	public static void print(HashMap<Integer,StudentDTO> listm) {
		System.out.println("번호\t이름\t국어\t수학\t영어\t총점\t평균");
		Set<Integer> keylist = listm.keySet();
		for(Integer key : keylist) {
			StudentDTO s = listm.get(key);
			System.out.print(s.getNum()+"\t"+s.getName()+"\t"+s.getKor()+"\t"+s.getMath()+"\t"+s.getEng());
			double sum = s.getKor()+s.getMath()+s.getEng();
			System.out.println("\t"+sum+"\t"+sum/3);
		}
	}
}

FileTest

  • File클래스의 API에 대해 살펴보기
    =>File과 Directory를 제어하기 위해서 제공되는 클래스
  • client-WAS-DBMS 사이에는 지속적인 input/output있음 => I/O 이해해야함
  • file은 os가 관리하는 자원
public class FileTest {
	public static void main(String[] args) {
		//기본경로가 프로젝트경로-
		//C:\backend23
		File file1 = new File("src/data/test.txt");//파일
		//File file2 = new File("C:\\backend23");//디렉토리
		File file2 = new File("C:/backend23");//위와같은말임~
		
		System.out.println(file1);//file1의 toString호출한것과 똑같음
		System.out.println(file1.length());//경로 지정 안하면 파일을 읽을수없어서 0이라뜸
		System.out.println("file1.canRead()=>"+file1.canRead());
		System.out.println("file1.canWrite()=>"+file1.canWrite());
		System.out.println("file1.getAbsolutePath()=>"+file1.getAbsolutePath());
		System.out.println("file1.getName()=>"+file1.getName());
		System.out.println("file1.getParent()=>"+file1.getParent());
		System.out.println("file1.getPath()=>"+file1.getPath());
		
		System.out.println("file1.isDirectory()=>"+file1.isDirectory());
		System.out.println("file1.isFile()=>"+file1.isFile());
		System.out.println("file1.lastModified()=>"+file1.lastModified());//밀리세컨?
		System.out.println("file1.length()=>"+file1.length());
		
		System.out.println("file2.isDirectory()=>"+file2.isDirectory());
		System.out.println("file2.isFile()=>"+file2.isFile());
		
		System.out.println(file2);
	}
}

FileExam/ File객체를 활용한 예제

  • file참조변수에 할당된 File객체의 내부에 있는 파일과 모든 폴더의 정보를 출력

tool --- [폴더]

....
....
ArgsTest.java ------[파일(15:2024/03/29)]
15=>파일사이즈/ 수정한날짜

[안내]

  • 지정한 File객체의 내부정보(폴더 내부의 모든 파일과 디렉토리 정보를 받아올 수 있는 메소드를 찾기)
    =>File클래스의 API문서에서 결과가 배열이나 자료구조인 메소드를 찾기
    =>File API문서에서 사용방법을 찾아서 작업
public class FileExam {
	public static void main(String[] args) {
		File file = new File("C:/backend23");
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
		File[] files = file.listFiles();
		for(File f:files) {
			if(f.isDirectory()) {
				System.out.println("["+f.getName()+"]"+"-------[폴더]");
			}else {
				System.out.println(f.getName()+"-------[파일("
									+f.length()+":"
									+sdf.format(f.lastModified())
									+":"+sdf.format(new Date(f.lastModified()))//이렇게도 할수있음
									+")]");
			}
		}
	}
}

InputStreamTest

public class InputStreamTest {
	public static void main(String[] args) {
		double mypi = Math.PI;
		//시스템의 구성요소는 static이라고 보면됨
//		System.out.println(mypi);
		InputStream in = System.in;//키보드 입력장치랑 연결된 변수
		PrintStream myout = System.out;//
//		myout.println("test");
		try {
			while(true) {
				int data = in.read();
				if(data==13) {//엔터누르면 13나와서..왠진모름
					break;
				}
				System.out.print((char)data);
			}
		}catch(IOException e) {//인풋스트림-read메소드 들어가면 IOException를 throw하고있음,,예외처리 복습
			e.printStackTrace();
		}
	}
}


InputStreamReaderTest

InputStreamReader를 이용해서 한문자씩 읽을 수 있도록 수정

stream,inputStream,InputStreamReader

public class InputStreamReaderTest {
	public static void main(String[] args) {
//		InputStream in = System.in;//키보드 입력
		InputStreamReader isr = new InputStreamReader(System.in);//얘는 문자단위로 읽어서 한글이 안깨짐, 다른건깨졌음.
		//시스템인도 걍 변수라 생각해. 안바뀌게 파이널처리해놓은 거라 생각..
		try {
			while(true) {
				int data = isr.read();
				if(data==13) {//엔터누리면 13나와서..왠진모름
					break;
				}
				System.out.print((char)data);
			}
		}catch(IOException e) {//인풋스트림-read메소드 들어가면 IOException를 throw하고있음,,예외처리 복습
			e.printStackTrace();
		}
	}
}

업로드중..

본 포스팅은 멀티캠퍼스의 멀티잇 백엔드 개발(Java)의 교육을 수강하고 작성되었습니다.

0개의 댓글