VectorEx
import java.util.List;
import java.util.Vector;
public class VectorEx {
public static void main(String[] args) {
// 이게 thread였다.
List<Board> list = new Vector<>();
list.add(new Board("제목1","내용1","글쓴이1"));
list.add(new Board("제목2","내용2","글쓴이2"));
list.add(new Board("제목3","내용3","글쓴이3"));
list.add(new Board("제목4","내용4","글쓴이4"));
list.add(new Board("제목5","내용5","글쓴이5"));
list.remove(2);
list.remove(3); //remove 되고 난 뒤의 순서에 따라 5번째 줄이 삭제됨.
for(int i =0; i < list.size(); i++){
Board board = list.get(i);
System.out.println(board.subject + "\t" + board.content + "\t" + board.writer);
}
}
}
Board
public class Board {
String subject;
String content;
String writer;
public Board(String subject, String content, String writer){
this.subject = subject;
this.content = content;
this.writer = writer;
}
}
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class LinkedListEx {
public static void main(String[] args) {
List<String> list1 = new LinkedList<>();
list1.add("0번");
list1.add("1번");
list1.add("2번");
System.out.println("list1의 0번 indes : " + list1.get(0));
System.out.println("list1의 크기 : " + list1.size());
System.out.println("\n-----인덱스 수정-------");
list1.set(0,"00번");
System.out.println("list1의 0번 index : " + list1.get(0));
System.out.println("\n-----인덱스 삭제---------");
list1.remove(2);
list1.remove(1);
System.out.println("list1의 크기 : " + list1.size());
System.out.println("\n\n");
List<String> arrayList = new ArrayList<>();
List<String> linkedList = new LinkedList<>();
long startTime;
long endTime;
startTime = System.nanoTime();
for(int i = 0; i < 10000; i++){
arrayList.add(0,String.valueOf(i));
}
endTime = System.nanoTime();
System.out.println("ArrayList로 10000개 추가 시 걸린 시간 : " + (endTime - startTime) + " ns");
System.out.println();
startTime = System.nanoTime();
for(int i = 0; i < 10000; i++){
linkedList.add(0,String.valueOf(i));
}
endTime = System.nanoTime();
System.out.println("LinkedList로 10000개 추가 시 걸린 시간 : " + (endTime - startTime) + " ns");
}
}
특징
구현 클래스
주로 키값은 String으로 한다.
HashSetEx
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class HashSetEx {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("Java"); // Java가 중복되어 있기 때문에 하나 제거되어 4개라고 카운트 된다.
set.add("JDBC");
set.add("Servlet / JSP");
set.add("Java");
set.add("mybatis");
int size = set.size();
System.out.println("HashSet에 저장된 수 : " + size);
Iterator<String> iterator = set.iterator();//순서없고 반복문 없다.
// Iterator는 정말 많이 사용된다. 내가 리스트를 쓰든, 배열을 쓰든, map을 쓰든 사용방법이 동일하다.
// hasnext로 확인하고, next()로 다음 데이터 가져오고.
while (iterator.hasNext()){ //반복문에 넣으면 하나씩 꺼낼 수 있다.
String element = iterator.next(); //깃발 옆으로 이동하면서 꽃는다.
System.out.println("\t" + element);
}
// for(String item : set) forin문 foreach문이라고도 불림. 이런 방법도 가능 하지만 while문을 많이 사용하는 추세
set.remove("JDBC"); //정확하게 찍어서 삭제해야 한다.
set.remove("mybatis");
System.out.println("\nHashSet에 저장된 수 : " + set.size());
iterator = set.iterator();
while (iterator.hasNext()){
String element = iterator.next();
System.out.println("\t" + element);
}
set.clear(); // 데이터 다 삭제시킴. 전체 다 비움.
if(set.isEmpty()){
System.out.println("HashSet이 비어있음");
}
}
}
HashSetEx2
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class HashSetEx2 {
public static void main(String[] args) {
// 문제1) HashSet을 사용하여 로또 번호 7개를 생성하는 프로그램을 작성하세요
// HashSet을 사용하면 중복 체크 부분이 필요없다.
for(int i = 0; i<7; i ++) {
int rnd = (int) ((Math.random() * 45) + 1);
System.out.print(rnd + "\t");
}
Set <Integer> set = new HashSet<>();
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()){
Integer element = iterator.next();
System.out.println("\t" + element);
}
//선생님버전
// Set <Integer> lotto = new HashSet<>();
// int count = 0;
//
// while(count < 7) {
// int rnd = ((int) Math.random() *45)+1;
//
// if(lotto.add(rnd)){
// count ++;
//
// if(lotto.size() == 7){
// break;
// }
// }
// }
//
// Integer<Integer> iter = lotto.iterator();
// String number = "";
// while(iter.hasNext()){
// int num = iter.next();
// number += String.valueOf(num) + "";
// }
// System.out.println(number);
////여기까지
// 내가 한 부분 주석 처리 안하니까 오류난다..
Set<Member> set1 = new HashSet<>();
set1.add(new Member("홍길동",30)); // new사용하면서 주소값이 달라져서 2개가 출력됨
set1.add(new Member("홍길동",30)); //하지만 동일한 값으로 인식되면 한 개로 출력이 됨.
System.out.println("\n총 객체 수 : " + set1.size());
}
}
hashMap과 유사하지만 thread 동기화가 되어 있어 안전하다.
import java.util.Hashtable;
import java.util.Map;
import java.util.Scanner;
public class HashTableEx {
public static void main(String[] args) {
Map<String, String> map = new Hashtable<>();
map.put("spring", "12");
map.put("summer", "123");
map.put("fall", "1234");
map.put("winter" , "12345");
Scanner scanner = new Scanner(System.in);
while(true){
System.out.println("아이디와 비밀번호를 입력해주세요 : ");
System.out.println("아이디 : ");
String id = scanner.nextLine();
System.out.println("비밀번호 : ");
String password = scanner.nextLine();
System.out.println();
if(map.containsKey(id)){
if(map.get(id).equals(password)){
System.out.println("로그인 되었습니다.");
break;
}
else{
System.out.println("비밀번호가 일치하지 않습니다.");
}
}
else{
System.out.println("입력하신 아이디가 존재하지 않습니다.");
}
}
}
}
자료구조 같은 건 기술면접에서 많이 물어보는 스타일..
hashTable과 같다. Map<스트링, 스트링>
9버전 다운로드한다.
10 버전은 JAVA EE -> 자카르타EE로 됨. 포스팅 아직 부족함.
그 밑에 두개는 압축 풀고 실행 (윈도우)
맨 밑은 인스톨러.
우리는 호환성때문에 압축파일 다운로드 할 거임.
실제 webapps에서 실행됨 - 그 안 root파일
bin - startup.bat (이거 누르면 서버 동작함.) shutdown.bat(멈춘다.)
spring tool suite
2가지 변경을 바꿔야
1) 개발환경
jsp 연결할려면 프로그램 설치 더해야한다.
eclipse javasript jax
eclipse
2021-12 - https://download.eclipse.org/releases/2021-12이거 누르고
////다시 돌아오면
javaEE가 추가되어있다. 화면 조금 바뀜
서버 연결해야한다.
톰캣 9버전으로 해준다.
폴더 선택할 때는 이렇게 bin, lib보일 때 까지 진행하고 폴더선택 눌러준다.
서버에 이렇게 stopped으로 뜬다.
servers라는 폴더가 생성한다.
밑의 servers를 더블클릭하면 이렇게 화면이 넘어간다.
우측 상단에 8080확인하기
액서스 허용 2개 뜬다. 허용 눌러준다.
주소창에 localhost:8080쳐라
여기까지 뜨면 제대로 서버가 연결된 것이다.!
stop누르면 닫힌다. 한 포트만 사용가능하기 때문에 사용안할 때는 닫아주자.
java
javaEE
체크박스 체크해주자
여기서 톰캣 꼭! 선택해야 한다.
선택안하면 이렇게 뜬다....ㅜㅜ
선택해야 이렇게 화면에 뜬다.
서버와 연결완료! 자동으로 창이 열린다.
이거 누르면 다 멈춤.
그레이들 선택
!!!!!!!버전 자바 8선택해야 한다!!!!!
servlet 올라온거 확인하세요!!
그러면 이렇게 다운로드한다.
서비스에 들어가서
실행버튼 눌러라
이렇게 되면 서버 연결된 것이다.
제거해주고 옆에 있는 + 눌러준다.
아티팩처 추가해준다.
한글깨질때
여기에
-Dfile.encoding=UTF-8
-Dconsole.encoding=UTF-8
를 저장한다.
다시 껐다 키면 한글 깨지는 현상 없어진다.