250x250
Notice
Recent Posts
Recent Comments
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

개린이 개발노트

국비지원 JAVA(자바) 프로그래밍(전화번호,이메일 정규식,정규표현식,ArrayList,LinkedList) 본문

국비지원(국비교육) 웹 개발자 과정

국비지원 JAVA(자바) 프로그래밍(전화번호,이메일 정규식,정규표현식,ArrayList,LinkedList)

개린이9999 2022. 12. 1. 10:20
728x90

자바API 이어서 

DATE 클래스 , 요새 사용잘안하고 Calender 클래스를 이용함.

package 자바API;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Sample01 {

	public static void main(String[] args) {
		
		Date now = new Date();
		
		System.out.println(now);
		
		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd E HH:mm:ss");	
				
		System.out.println(sf.format(now)); 	// 
		
	
	}

}

Date는 권장은안함-> Calender로 처리


Calender

Calender 인터페이스 인터페이스는 객체생성이 안됨.

 

package 자바API;

import java.util.Calendar;	// import

public class Sample02 {

	public static void main(String[] args) {

	Calendar today = Calendar.getInstance();	//메소드 호출
	
	System.out.println(today.get(Calendar.YEAR));// filed에서 상수값 호출, ex)YEAR,MONTH, MONTH는(0부터11)그래서+1을 해줘야함, //내가 원하는 것만 볼 수 있음.
												// ex) MINUTE,AM.PM, 
	System.out.println(today.get(Calendar.WEEK_OF_YEAR)); // 1월1일부터해서 현재 몇번쨰 주인지 알려줌 //지금은 49번쨰 주다.
	System.out.println(today.get(Calendar.DAY_OF_WEEK)); // DAY_OF_WEEL 에서 1은 일요일 7은 토요일 1부터~7까지 표현 
	
	//today.get(Calendar. 이용해서 2022년 12월 1일 출력하기
	System.out.println(today.get(Calendar.YEAR)+"년"+(today.get(Calendar.MONTH)+1)+"월"+today.get(Calendar.DATE)+"일");
	
	}
}

Arrays 클래스 ( static 메서드 (정적 메서드)) 라서 바로바로 사용 가능! 

package 자바API;

import java.util.Arrays;

public class Sample03 {

	public static void main(String[] args) {

		String[] arr = {"홍","이","강","김"};
		Arrays.fill(arr,1,3,"X");  // (arr1번방부터 3번방전까지x로 채워라) -> 1번방과 2번방에 있는것만 x로 바뀌어서 나타남 
//		Arrays.fill(arr,"임"); // fill 메서드를 이용해서 전부 임으로 채워라

		for(String a: arr)
			System.out.println(a);  
	}

}

 


binarySearch() 메서드, 바이너리

이진검색알고리즘

// 이진검색알고리즘 1-50-> 25 업 부르면 ->37부름
// 이진 검색하려면 무조건 정렬이 되어있어야 합니당

 

package 자바API;

import java.util.Arrays;

import javax.swing.text.DefaultEditorKit.CopyAction;

public class Sample03 {

	public static void main(String[] args) {

	int[] arr = new int[1000];
	
	for(int i=0;i<1000;i++) {
		arr[i] = i + 1;
	}
	// 위에 있는 배열과동일한 배열을 만들고 싶을 때
	int[] arr2 = Arrays.copyOf(arr, 5);
	for(int a : arr2) {
		System.out.print(a); // 0번방부터 4번방까지 복사 0번바의값부터 4번방의 값까지 알려줌
	}
	
	}
}

 

 


array 클래스

package 자바API;

import java.util.Arrays;

public class Sample03 {

	public static void main(String[] args) {

		//array 클래스
		
		int[] arr = {5,3,1,4,2};
		
		Arrays.sort(arr);
			
		for(int a: arr) {
		System.out.print(a);
		}
	}
}

//DecimalFormat - 숫자 형식 지정

 

DecimalFormat - 숫자 형식 지정- 소수점 부분

 


##과 00의 차이

 




정규식, 정규표현식, 크롤링

Pattern, Matcher

https://hbase.tistory.com/160

 

[Java] 정규표현식 사용법 및 예제 - Pattern, Matcher

자바에서 정규표현식(Regular Expression)'을 사용해보자. 1. 정규표현식(Regular Expression) 정규표현식 혹은 정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용되는 언어다. 정규 표현식은

hbase.tistory.com

package 자바API;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Sample05 {

	public static void main(String[] args) {
	
	Pattern p = Pattern.compile("b[a-z]*"); 		
	//"b[a=z]*" 첫글자는 무조건b여야 되고  대괄호 안에 a-z까지라고 되어있는데 그것만 입력가능// *다음에는 뭐가 나오든 상관없음
	Matcher m;
	
	m = p.matcher("bat");
	System.out.println(m.matches());
	
	}

}

결과값은 트루나 폴스로, 이건 트루


정규식 ,정규표현식

package 자바API;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Sample05 {

   public static void main(String[] args) {
      //패턴 클래스를 이용해서 하나하나 비교하는 작업
      String[] patterns = {            
            ".",            
            "[a-z]?",            
            "[0-9]+",            
            "0[1-9]*",            
            "^[0-9]",            
            "[a-z]*",            
            "[a-z]+",            
            "02|010",            
            "\\s",            
            "\\S",            
            "\\d",            
            "\\w",            
            "\\W"
      };
      
      //단순 배열 2개 만들어 둔 것
      String[] datas = {            
            "bat",         
            "021231234",            
            "12345",         
            "011",         
            "bed",            
            "02",            
            "A",            
            "9",            
            "a",            
            "*"
      };
      
      for(String d : datas) {
         System.out.print(d + "문자와 일치하는 패턴 : ");
         
         for(String p : patterns) {
            Pattern pattern = Pattern.compile(p); // <-- 정규식
            Matcher m = pattern.matcher(d);
            
            if(m.matches())
               System.out.print(p + ", ");
         }
         System.out.println();
      }
   }

}

결과값

bat문자와 일치하는 패턴 : [a-z]*, [a-z]+, 
021231234문자와 일치하는 패턴 : [0-9]+, 0[1-9]*, 
12345문자와 일치하는 패턴 : [0-9]+, 
011문자와 일치하는 패턴 : [0-9]+, 0[1-9]*, 
bed문자와 일치하는 패턴 : [a-z]*, [a-z]+, 
02문자와 일치하는 패턴 : [0-9]+, 0[1-9]*, 02|010, 
A문자와 일치하는 패턴 : ., \S, \w, 
9문자와 일치하는 패턴 : ., [0-9]+, ^[0-9], \S, \d, \w, 
a문자와 일치하는 패턴 : ., [a-z]?, [a-z]*, [a-z]+, \S, \w, 
*문자와 일치하는 패턴 : ., \S, \W, 


전화번호, 이메일 정규식 간단하게

 

전화번호 =   (0\\d{1,2}-(\\d{3,4}-(\\d{4})))
이메일 =       (\\w+)@(\\w+).(\\w+)


컬렉션 프레임워크-배열

 

List/Set/ 비슷한 느낌 

Map 

List 순서가 있음, 데이터 중복 가능

Set 순서가 없음, 데이터 중복 불가능

Map 순서가 없음 ,
키와 값으로 구문 
key: 이름 value:홍길동
key: 나이 value:20
key-> 중복 불가능 value-> 중복가능

remove


제네릭,제네릭스 어떤 자료형 데이터를 넣을지 명시해주는 기능 

예시)

 

ArrayList<String> user = new ArrayList<String>(); String만 써라

ArrayList<String> user = new ArrayList<>();-> 이렇게 축약

-> 문자열만 사용 가능 

 

ArrayList<Integer> user = new ArrayList<>();

-> 정수형만 사용 가능 

ArrayList사용할 때 주의사항 ↓

ArrayList < 풀네임만 사용 가능 ex) Integer,Chracter 등)>

ArrayList

package 컬렉션프레임워크;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;

public class Sample02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		String[] names = { "가렌", "갈리오", "갱플랭크" };

		ArrayList<String> name = new ArrayList<>(Arrays.asList(names));

		System.out.println(name);

//		ArrayList<String> name2 = new ArrayList<>(Arrays.asList(추가할 내용들 작성하면 됨)); 
		ArrayList<String> name2 = new ArrayList<>(Arrays.asList("박", "이", "김"));

		System.out.println(name2);

//		System.out.println(String.join("출력할 객체에 넣고싶은 문자열",출력할객체이름 ));
		System.out.println(String.join("/", name2));

		name2.sort(Comparator.naturalOrder());
		System.out.println(name2);

		name2.sort(Comparator.reverseOrder());
		System.out.println(name2);

	}

}

LinkedList

package 컬렉션프레임워크;

import java.util.ArrayList;
import java.util.LinkedList;

public class Sample03 {

   public static void main(String[] args) {
   
      ArrayList alist = new ArrayList();
      LinkedList llist = new LinkedList();
      
      for(int i = 0; i<10000; i++) {
         alist.add(i);
         llist.add(i);
      }
      
      System.out.println("ArrayList");
      long start = System.currentTimeMillis();
      
      for(int i = 0; i<alist.size(); i++)
         alist.get(i);
      
      long end = System.currentTimeMillis();
      System.out.println(end-start);
      
      
      System.out.println("LinkedList");
      start = System.currentTimeMillis();
      
      for(int i = 0; i<llist.size(); i++)
         llist.get(i);
      
      end = System.currentTimeMillis();
      System.out.println(end-start);
      
   }

}
package 컬렉션프레임워크;

import java.util.ArrayList;
import java.util.LinkedList;

public class Sample04 {

	public static void main(String[] args) {
		
		ArrayList alist = new ArrayList();
		LinkedList llist = new LinkedList();
		
		for(int i = 0; i < 100000; i++) {
			alist.add(i);
			llist.add(i);
		}
		
		System.out.println("ArrayList");
		long start = System.currentTimeMillis();
		for(int i = 0; i<10000; i++)
			alist.add(500, i); //500번 배열방에 추가 시키는 작업
		long end = System.currentTimeMillis();
		System.out.println(end - start);
		
		System.out.println("LinkedList");
		start = System.currentTimeMillis();
		for(int i = 0; i<10000; i++)
			llist.add(500, i); //500번 배열방에 추가 시키는 작업
		end = System.currentTimeMillis();
		System.out.println(end - start);
	}

}

속도비교하기


Set 관련 - 중복안되고 순서도 없음 

 

package 컬렉션프레임워크;

import java.util.HashSet;

public class Sample05 {

	public static void main(String[] args) {

		HashSet<String> set =new HashSet<String>();
		
		set.add("Hello");
		set.add("Java");
		set.add("World");
 	
	System.out.println(set);	// set에서는 순서가 없다.
	}

}

결과값이 순서대로가 아님

 

package 컬렉션프레임워크;

import java.util.Arrays;
import java.util.HashSet;

public class Sample05 {

	public static void main(String[] args) {

		HashSet<String> set = new HashSet<String>();

		set.add("Hello");
		set.add("Java");
		set.add("World");

		System.out.println(set); // set에서는 순서가 없다.

		set.addAll(Arrays.asList("HTML", "CSS", "JS"));
		System.out.println(set);

		set.remove("Java");
		System.out.println(set.remove("Java"));
		System.out.println(set);

	}

}

결과값 확인!

Set은 순서가 없지만 순서가 필요한 경우가 생겼을 때! 

TreeSet 순서를 기억해줌 (오름차순 정렬) 

package 컬렉션프레임워크;

import java.util.Arrays;
import java.util.TreeSet;

public class Sample06 {

	public static void main(String[] args) {

		TreeSet ts =new TreeSet(Arrays.asList(4,5,10,2,7));
		
		System.out.println(ts); 	//
		
	}

}

Treeset -> 결과값도출

 


Desecend 디센드 

package 컬렉션프레임워크;

import java.util.Comparator;

public class Descend implements Comparator {

	public int compare(Object o1, Object o2) {
		
	
		Comparable c1 = (Comparable)o1;
		Comparable c2 = (Comparable)o1;
			
			return c1.compareTo(c2)*-1;
	}
	
}

package 컬렉션프레임워크;

import java.util.SortedSet;
import java.util.TreeSet;

public class Main {

   public static void main(String[] args) {
      
      SortedSet set = new TreeSet(); //다형성에 형태
      
      String from = "bat";
      String to = "d";
      
      set.add("and");
      set.add("alist");
      set.add("batman");
      set.add("aha");
      set.add("cola");
      set.add("Cola");
      set.add("ddr");
      set.add("dance");
      set.add("dEEE");
      set.add("deee");
      set.add("ever");
      set.add("giant");
      set.add("zoo");
      
      System.out.println(set);
      System.out.println(set.subSet(from,to));
      
      set = new TreeSet(new Descend());
  
   }
}

결과값


Iterator

List-Set-Map

 

hasnext

package 컬렉션프레임워크;

import java.util.ArrayList;
import java.util.Iterator;

public class Sample07 {

	public static void main(String[] args) {

		ArrayList list = new ArrayList();
		
		list.add(1);
		list.add(2);
		list.add(3);
		
		Iterator iter = null;
		
		iter=list.iterator();	//while문으로 많이 돌리는 편
		
		while(iter.hasNext()) {			//while 안의 조건식이 참일때 반복을 계속하다가 거짓일 경우 종료
		
		System.out.print(iter.next()+" ");
		}
	
	}

}

package 컬렉션프레임워크;

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

public class Sample08 {

   public static void main(String[] args) {
      
      Iterator it = null;
      
      List list = new ArrayList();
      Set set = new HashSet();
      
      for(int i=1;i<=5;i++) {
         list.add(i);
         set.add(i+5);
      }
      
      System.out.println(list); //데이터
      System.out.println(set);
      
      it=set.iterator();
      
      System.out.println("List");
      System.out.println(it);
      iteratorPrint(it);
      
   }

   private static void iteratorPrint(Iterator it) {
	
	while (it.hasNext()) {
		System.out.println(it.next());		
	}
}

}

Map - 키는 (key) (key는 주소값이라고 생각하셈) 중복안됨  ,값은(value는 내용물이라고 생각하셈) 중복가능

 

package 컬렉션프레임워크;

import java.util.HashMap;

public class Sample09 {

	public static void main(String[] args) {

		HashMap<Integer, String> hm = new HashMap<>();

		hm.put(1001, "고길동");
		hm.put(1002, "aaaa");
		hm.put(1003, "bbbbb");

		System.out.println(hm);

		for (int key : hm.keySet())
			System.out.println(key + "/" + hm.get(key));

		hm.remove(1002);

		for (int key : hm.keySet()) {
			System.out.println(key + "/" + hm.get(key));

		}
	}

}

package 컬렉션프레임워크;

import java.util.HashMap;

public class Sample09 {

	public static void main(String[] args) {

		HashMap<Integer, String> hm = new HashMap<>();

		hm.put(1001, "고길동");
		hm.put(1002, "aaaa");
		hm.put(1003, "bbbbb");

		for(String value:hm.values())
		System.out.println(value);
		
		
		
	
	}
}

package 컬렉션프레임워크;

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

public class Sample10 {

	public static void main(String[] args) {

		String[] names = { "홍길동", "김유신", "이순신" }; // key값
		int[] nums = { 1234, 4567, 9874 }; // value값
		
		Map map = new HashMap();

		for (int i = 0; i < 3; i++) {
			map.put(names[i], nums[i]);
		}
		System.out.println(map);
		
		Set entry = map.entrySet(); 
	
		for(Object o: entry) {
			Map.Entry m = (Map.Entry) o;
			
			System.out.println("key:"+m.getKey()+"value: "+m.getValue());
		}
	}
}

 


커피만들기

클래스

package 커피;

public class Menuinfo {


	String name;
	int price;
	String group;	// 커피베이스인지 아닌지 등 
	String type;  // 정보저장
	
	public Menuinfo(String name, int price, String group, String type) {
		this.name = name;
		this.price = price;
		this.group = group;
		this.type = type;
	}

}

main문

 

package 커피;

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

public class Main {
	
	///map 생성 (키와 값을 넣어줘야 되고) 제너널로 키에는 문자열만, 값에는 메뉴인포라는 객체를 넣을거다라고 지정
	//처음에는 비워져 있는 상태
	static Map<String, MenuInfo> map = new HashMap<>(); 

	public static void main(String[] args) {
		
		//메서드 호출
		makeMenu();
		selectMenu();

	}
	
	
	//메서드 생성 위치
	static void makeMenu() {
		//메뉴를 입력받아서 작동
		
		//map.put("key", "value")
		// new MenuInfo("아메리카노", 2000, "커피", "기본커피")) <-- value 값을 새롭게 객체를 생성해서 "아메리카노" 키 값에 다 넣어진것
		map.put("아메리카노", new MenuInfo("아메리카노", 2000, "커피", "기본커피"));
		map.put("카라멜마끼아또", new MenuInfo("카라멜마끼아또", 3500, "커피", "달달한커피"));
		map.put("에스프레소", new MenuInfo("에스프레소", 1500, "커피", "쓴커피"));
	}
	
	static void selectMenu() {
		Scanner sc = new Scanner(System.in);
		String key;
		
		//while문으로 true일때 계속 반속
		while(true) {
			System.out.println("메뉴를 선택해주세요");
			System.out.println("[1] 메뉴보기 [2] 메뉴조회 [3] 메뉴추가 [4] 메뉴삭제 [5] 메뉴변경 [6] 종료");
			int selMenu = sc.nextInt();
			
			//위에서 입력한 값이 스위치문에서 그 값에 맞게 출력
			switch(selMenu) {
			//케이스 1일 때 아래 내용 출력
			case 1 : //메뉴보기
				System.out.println("===메뉴보기===");
				
				//map.keySet() <--- 이걸 e에 넣고 이때 e가 키값이 된다.
				for(String e : map.keySet()) {//key값을 다 받아와서 반복
					
					// map.get(e).name 객체에 저장되어 있는 name이라는 변수를 불러와 출력
					System.out.println("메뉴 : " + map.get(e).name); //map.get(e).name 맵에 저장되어 있는 객체에 이름을 가져와서 출력
					System.out.println("가격 : " + map.get(e).price); //맵에 저장되어 있는 객체에 가격을 가져와서 출력
					System.out.println("분류 : " + map.get(e).group); //맵에 저장되어 있는 객체에 분류를 가져와서 출력
					System.out.println("타입 : " + map.get(e).type); //맵에 저장되어 있는 객체에 타입을 가져와서 출력
					System.out.println("------------------------");
				}
				break;
				
			case 2 : //메뉴조회
				System.out.println("조회할 메뉴를 입력 : ");
				key = sc.next(); //String key; <-- 위에서 문자열 key변수 선언함
				
				if(map.containsKey(key)) { //바로 위에 key = sc.next(); key를 if안 조건식에 넣어준다.
				
					System.out.println("메뉴 : " + map.get(key).name); 
					System.out.println("가격 : " + map.get(key).price); 
					System.out.println("분류 : " + map.get(key).group); 
					System.out.println("타입 : " + map.get(key).type);
					
				} else { //기존에 있는 메뉴 중에 없는 메뉴를 입력할 경우
					System.out.println("입력한 메뉴가 없음");
				}
				break;
				
			case 3 :
				System.out.println("추가할 메뉴 입력 : ");
				key = sc.next();
				
				if(map.containsKey(key)) {
					System.out.println("중복 되는 메뉴 입니다"); //저장된 키 값 중에 같은 메뉴를 입력할 경우 프린트문 출력
				} else { //아예 다른 값을 입력할 경우 아래 정보 입력 후 키 값에 저장
					System.out.println("가격 입력 : ");
					int price = sc.nextInt();
					System.out.println("분류 입력 : ");
					String group = sc.next();
					System.out.println("설명 입력 : ");
					String type = sc.next();
					
					//위에 정보를 map에 추가로 넣어줘야 되기 때문에 .put 사용
					//put 기존에 없는걸 추가 시키는 것
					map.put(key, new MenuInfo(key, price, group, type));
				}
				break;
				
			case 4 :
				System.out.println("삭제할 메뉴 입력 : ");
				key = sc.next();
				
				if(map.containsKey(key)) {
					map.remove(key); //저장된 키 값 중 입력한 값을 삭제 remove
					System.out.println(key + "가 삭제됨");
				} else {
					System.out.println("삭제할 메뉴가 없음");
				}
				break;
				
			case 5:
				System.out.println("수정할 메뉴를 입력 : ");
				key = sc.next();
				
				if(map.containsKey(key)) { //키 값에 보관 되어 있는 것 중 위에서 입력받은 키 값에 정보를 수정하여 변경하도록
					System.out.println("가격 입력 : ");
					int price = sc.nextInt();
					System.out.println("분류 입력 : ");
					String group = sc.next();
					System.out.println("설명 입력 : ");
					String type = sc.next();
					
					// 정보를 수정하기 위해서는 .replace 기능 사용
					// replace 기존에 있는걸 수정하는 것
					// put 보다 효쥴적이다.
					map.replace(key, new MenuInfo(key, price, group, type));
				} else {
					System.out.println("수정할 메뉴가 없음");
				}
				break;
				
			case 6:
				System.out.println("종료합니다");
				return; //보내는것 없지만 그냥 그 메서드를 종료시켜라
				
			default:
				System.out.println("잘못 입력");
				
			
			}
			
			
			
		} 
	}

}
728x90