Jam's story

24일차- 제네릭 프레임워크 본문

Java

24일차- 제네릭 프레임워크

애플쩀 2022. 3. 23. 16:56
Period

 

Between() -static 메소드 
until() =인스턴스 메소드 (객체명으로 사용) 

 

Duration

- 시간간격을 계산
[Second, Nano] 만 계산이 된다. 
//60분-1분
//1시간 == 60 분== 60*60초
//하루==24시간==24*60분 ==24*60*60초 ==24*60*60*1000ms
	long hour=d.getSeconds()/60*60;
	long minute=(d.getSeconds()-hour*3600)/60;
	long second=(d.getSeconds()-hour*3600-minute*60)%60;
	int nano=d.getNano();
	LocalTime t1=LocalTime.now();
	LocalTime t2=LocalTime.of(12, 34,56);
	System.out.println(t1);
	
	Duration d=Duration.between(t1, t2);
	System.out.println(d.between(t1, t2));
	System.out.println(d.getSeconds());
	System.out.println(d.getNano());

 

of() 설정 
with() 수정
plus() +수정
minus() -수정

 

예제 

	Period p=Period.of(1,12,31);
	p.withYears(2);
	p.withMonths(3);
	p.withDays(3);
	p.minusYears(3);

 

Date, Calendar ->포맷, 파싱- >SimpleDateFormat 클래스 사용
JDK 1.8 LocalDate ,LocalTme,LocalDtaeTime -> 포맷,파싱 ->DateTiemFormatter 클래스 사용 

 

DateTimeFormatter 
	LocalDate today=LocalDate.now();
	System.out.println(today);
	DateTimeFormatter formatter=DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG);
	DateTimeFormatter formatter2=DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT);
	
	String stoday=formatter.format(today);
	System.out.println(stoday);

	String stoday2=formatter2.format(today);
	System.out.println(stoday2);

	//원하는 형태로 출력
	String pattern = "yyyy년 M월 dd일";
	DateTimeFormatter formatter3 =DateTimeFormatter.ofPattern(pattern);
	String stoday3=formatter3.format(today);
	System.out.println(stoday3);

 

파싱
문자열-> 날짜 /시간 형식 
	//String ->LocalDateTime 변환 
	String s1="2022년 2월 15일 12시 34분 56초";
	String pattern="yyyy년 M월 dd일 HH시 mm분 ss초";
	DateTimeFormatter formatter =DateTimeFormatter.ofPattern(pattern);
	
	LocalDateTime t=LocalDateTime.parse(s1,formatter);
	System.out.println(t);
만일 오류가 난다면, pattern과 s1의 공백차이일 수 있다. 
->s1을 그대로 복사해서 pattern에 붙여넣은담에 패턴기호(yyyy)로 바꾸기 

 

컬렉션 프레임워크

                                                                     완전 중요!!!!!!!

 

데이터 집합 군을 저장(관리- 추가 ,수정, 삭제 등등) 하는 클래스를 표준화 설계

클래스(데이터 군 관리) 

Collection 인터페이스 

 

ArrayList
가장많이사용되는 컬렉션클래스 
list인터페이스 구현한 클래스
순서O 중복O

배열의 단점 
1.배열 크기 자동증가 x
2.배열 삽입 (insert)
3.삭제 remove
4.등등 


 

list.add 

int -> Integer->Object 오토박싱 

all 이 들어간것은 집합을 뜻함 

 

Iterator ir=iterator 반복자  

모든 요소를 출력 (암기) 
	Iterator ir=class5.iterator();

	//hasNext=> boolean
	while (ir.hasNext()) {
		//다음요소를 읽어옴 
		String name=(String)ir.next();
		System.out.println(name);
		
	}

 

Clone 
오름차순정렬 후 출력
	//이름을 오름차순으로 정렬해서 출력 
	ArrayList class5Clone=(ArrayList)class5.clone(); //복제
	System.out.println(class5Clone);
	Collections.sort(class5Clone); //정렬 
	System.out.println(class5Clone);
//

 

Collections.sort(list , 비교기준 ) 

 

 

오름차순 정렬 
 public int compare(Object o1, Object o2) {
	 if(o1 instanceof Student && o2 instanceof Student ) {
		 Student s1=(Student) o1;
		 Student s2=(Student) o2;
		 return s2.tot-s1.tot; 
	 }

 

Arrays.asList
String -> Arraylist[] 변환 
String[] names= {"r","d","s","sa","sdf"};
ArrayList list=new ArrayList(Arrays.asList(names));

 

 

ArrayList 
Vector (멀티스레드에 안전 == 동기화되어있다. )
Vector 용량추가 자유롭다. 

열거자로 출력 
	Enumeration en=v.elements();
	while (en.hasMoreElements()) {
		String name=(String) en.nextElement();
		System.out.println(name);
	}

 

반복자와 열거자의 차이 
fail-fast 차이 

 

 

 첫번째 요소를 가져오겠다.
v.firstElement()== v.get(0) == v.elementAt(0)

 

v.lastElement()==v.get(v.size()-1)

 

v.insertElement(요소, 위치(index)) == v.add(요소, 위치(index)) 

 

v.[list]Iterator(0)
Iterator ,ListIterator, Enumeration  

 

v,remove(인덱스)
v.remove(객체)
v.removeElementAt(인덱스)
v.removeElement(객체)

 

 

Ojbect[] toArray() ->String 배열

Object[] m=(String[])v.toArray();

 

 

LinkedList
배열- 장) 읽기 가장 빠르다. 단) 비순차적, 삽입 삭제 무지 느리다.  이러한 단점을 보완 -> LinkedList

불연속적으로 존재하는 데이터를 서로 연결한 형태로 구성되어있다. 

 

 

'Java' 카테고리의 다른 글

[컬렉션 프레임워크] -ArrayList  (0) 2022.03.24
25일차  (0) 2022.03.24
23일차- 날짜와 시간, 형식화  (0) 2022.03.22
22일차  (0) 2022.03.21
정규표현식 -java.util.regex 패키지  (0) 2022.03.20
Comments