※ TreeSet
- TreeSet : Set 인터페이스를 구현하는 컬렉션 클래스
ㄴ 핵심인터페이스 Set특징 : 순서유지 X , 중복저장 X
- TreeSet 은 데이터 정렬이 가능하다 => 유니코드 기준으로 정렬됨 ( 숫자 영어 한글 순 )
▷ TreeSet 생성하기
TreeSet<Integer> tset = new TreeSet<Integer>();
▷ TreeSet 값넣기
tset.add(10);
tset.add(4);
=> 값을 아무렇게나 넣어도 유니코드 순서대로 정렬되어 출력된다
▷ 값읽어오기
- iterator 사용 : Set은 인덱스로 객체를 관리하지 않기 때문에 데이터를 검색하기 위해서는 iterator() 메서드로 Iterator(반복자)를 생성하고 데이터를 가져와야 한다.
Iterator<Integer>iter = tset.iterator();
while(iter.hasNext()){
int n = iter.next();
System.out.println(n);
}
▶ TreeSet - Set 인터페이스 다형성 이용
Set<Integer>set = new TreeSet<Integer>();
while(set.size()<6) {
int n = (int)(Math.random()*45+1);
set.add(n);
}
System.out.println(set); // toString 이 자동으로 호출되어 set 참조변수 안의 값을 보여줌
▶Comparable
- 뭔지 모르겠음 구글링해도 모르겠음 이걸 이해하는날이 . . 올까 ?
- TreeSet에 저장하려면 Comparable<T>인터페이스 구현을 통해 정렬기준을 개발자가 직접 정의해야함
▷클래스 만들때
class Person implements Comparable<Person>{
▷클래스에 메서드 만들기
public String toString() {
return "Person[]="+name+", age="+age+"]";
}
@Override
public int compareTo(Person p) {
// 정렬기준을 나이로 정하자
if(this.age>p.age) {
return 1; //매개변수 p의 나이가 작다면 양수반환
}else if (this.age>p.age) {
return -1;//음수
}else {
return 0; //
}
}
▷ main 에서 구현하기~
TreeSet<Person>tset = new TreeSet<Person>();
tset.add(new Person("홍길동",20));// 실행에러
//ClassCastException:Person cannot be cast to class Comparable
tset.add(new Person("박길동",17));
tset.add(new Person("김길동",31));
//TreeSet<E>는 Person 인스턴스가 저장될 때마다 기존에저자오딘 인스턴스와의 비교를 위해서
//compareTo()메서드를 빈번히 호출하여, 이때 반환되는 값을 기반으로 정렬을 진행
Iterator<Person>iter = tset.iterator();
while(iter.hasNext()) {
Person p =iter.next();
System.out.println(p);
}
※ String 클래스의 메서드
▶indexOf()
- 특정 문자가 있는 위치를 찾는 메서드
- ★★★해당문자가 없으면 -1을 리턴 !
- int 형식을 리턴해야하는 indexof 는 만약 문자열에 없는 값을 리턴하라고 하면 -1을 리턴한다.
(boolean 이아니기 때문에 false를 리턴하지 않음)
▷indexOf(String)
- int (찾을 문자열이 시작하는 index 위치 ) = indexOf (찾을 문자열)
=> indexOf(String) 사용할 경우 String 에 입력한 문자열이 시작하는 위치의 index 값이 반환된다
String str = "Hello Java, Hi Java!";
int idx = str.indexOf("Java"); //6
▷ lastIndexOf(String)
- indexOf 와 동일한 형식이나, 뒤에서부터 찾는다
int idx = str.lastIndexOf("Java"); //12
▷ indexOf(String, int)
- int 만큼 건너뛰고 String 을 찾고, 그 String(문자열) 이 시작하는 위치(int) 를 리턴
▷ lastIndexOf(String,int)
- 뒤에서 ``
▶substring()
- 문자열의 일부를 추출할 때 사용
▷ substring(int)
- String str = substring(int a)
- 인자로 전달된 index를 기준으로 문자열을 자르고 String을 리턴
String str = "Hi guys. This is split example";
String result = str.substring(17); // split example
▷ substring(int a,int b)
- a 부터 b 사이의 문자열 잘라서 리턴
- ★ 크거나같고 작은 사이의 문자열을 가져온다 ! ( a<= 문자열 < b )
System.out.println(str.substring(6,10));
=> String sub = str.substring(6,10) // System.out.println(sub) ;
대신
변수에 넣지 않고 이렇게 바로 출력가능
▶ split ()
- 특정 문자를 기준으로 문자열을 잘라서 배열에 넣어줌
- 문자열을 여러 개의 토막으로 분리
- String값을 특수기호로 끊어서 배열에 저장시켜줌
- 문자열배열 = 대상문자열.split("기준문자");
String str = "java,oracle,jsp,spring";
String[]arr = str.split(","); // ,기준으로 split 해서 새로운 배열을 만들어 넣어줌
for(String s3:arr) {
System.out.println(s3);
}
- String[] arr = {java, oracle, jsp, spring};
이렇게 하나의 배열이 만들어진거임 !
▶ ~with()
- boolean
▷ startsWith()
- startsWith(String)
- String 으로 시작한다면 true
▷ endsWith()
- endsWith(String)
- String 을 끝난다면 true
String s = "www.nate.com";
if(s.startsWith("www")) {
System.out.println("www로 시작함");
}if(s.endsWith(".com")) {
System.out.println(".com 으로 끝남");
}
▶ trim()
- 문자열공백제거메서드
String s=" java spring!! ";
String s2=s.trim();
▶ valueOf()
- 모든자료형을 String 으로 변환해줌
- 클래스명 . 으로 사용 ( String 클래스 )
int x =10, y=30;
String val = String.valueOf(x);
System.out.println(val + y); // 1030
= > valueOf 를 사용안했을때 x + y 는 40 이지만
valueOf 를 통해 x = val 로 String 으로 변환했기때문에 1030이 출력됨
▶ replace ()
- 문자열 치환함수
▷ replace (Char oldChar, char newChar)
=>oldChar 를 newChar 로 변경해라
String a = "무궁화 삼천리 화려강산 대한사람 대한으로 길이 보전하세 ";
a= a.replace("대한", "민국");
System.out.println(a); // 무궁화 삼천리 화려강산 민국사람 민국으로 길이 보전하세
oldChar "대한" 이 newChar "민국" 으로 치환됨
▷ replace (Char oldChar, char newChar)
=>첫번재 oldChar 만 newChar 로 변경해라
a= a.replaceFirst("대한", "민국");//무궁화 삼천리 화려강산 민국사람 대한으로 길이 보전하세
※ Calendar 클래스의 메서드
- Calendar 클래스는 추상클래스이기때문에 객체생성이 불가하다.
- 따라서 (1) 자식 클래스인 GregorianCalendar를 이용하거나
(2) getInstance 를 사용하여 객체생성한다
- 메서드들은 모두 static 이라서 클래스명 . 으로 사용
Calendar cal = Calendar.getInstance();
Calendar cal2 = new GregorianCalendar();
▷ today 년, 월, 일 값 받아오기
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int date = cal.get(Calendar.DATE);
- ▽ 이런식으로 today 년월일 구하는 메서드로 만들어서 사용할 수 있다
public static String showDate(Calendar cal) {
return cal.get(Calendar.YEAR)+"년"+(cal.get(Calendar.MONTH)+1)+"월"+cal.get(Calendar.DATE);
}
main ()
System.out.println("현재일자:"+showDate(today));
▷ add
- 날짜 더하기
Calendar today = Calendar.getInstance();
today.add(Calendar.DATE, 100); //100일후
today.add(Calendar.MONTH, -3); // 3달전
today.add(Calendar.YEAR, 7); // 7년후
▷ today 요일 받아오기
int week = cal.get(Calendar.DAY_OF_WEEK);
String[] arr = {"","일","월","화","수","목","금","토"};
System.out.println("요일:"+arr[week]);
- Day_Of_Week : 1 = 일 , 2 = 월 . . . 순서
- Day_Of_Week 에 0 값은 없기 때문에 arr 첫번째 값을 비워둔다
▶ getTimeInMillis()
- 두 날짜간 차이 구할 때 사용
- 이 메서드는 이 달력의 현재 시간을 밀리초 단위로 반환함
따라서 자료형 long 으로 받아주깅
- 1/1000 천분의 일초 단위까지 반환해줌. (밀리초)
따라서 천분의일초 => 초단위 => 일단위로 변환 해야지 두 날짜간 일 차이를 구할 수 있다
long gap = cal.getTimeInMillis()/1000;
gap = gap/(24*60*60);
※ Date 클래스의 메서드
- 추상클래스가 아니기때문에 객체생성해서 참조변수 . 으로 Date 클래스의 메서드 사용하면 됨
Date d = new Date();
System.out.println(d); //Sun Mar 13 15:40:18 KST 2022
- Date 객체생성해서 냅다 참조변수 불러오면
오늘 날짜정보가 위와같이 출력된다
▷ toLocaleString()
- d로 불러왔던 날짜정보를 로컬로 간단하게 바꿔줌
System.out.println(d.toLocaleString()); // 2022. 3. 13. 오후 3:40:18
▷ getYear() , getMonth()
- d 년도를 가져옴 / d 달을 가져옴
- year : ★+1900 해서 print 해줘야함
month : ★ +1 해서 print 해줘야 함
int year = d.getYear();
System.out.println((year+1900) +"년"); // 2022년
System.out.println(d.getMonth()+1+"월"); // 3월
▶ Date 이용하여 두 날짜 사이의 간격 구하기
1. 두 날짜 설정
Date d = new Date(); //오늘
Date d2 = new Date(2022-1900,11,25); // 2022년 크리스마스
- 월 입력할땐 항상 한개 빼주기 (12월 출력하고싶으면 11입력)
2. getTime 이용하여 빼주기 ( = Calendar 클래스의 getTimeInMillis() 과 동일한 성질 )
long gap = (d2.getTime()-d.getTime())/1000;
gap = gap/(24*60*60); // 밀리초 => 일 로 변환하는 과정
3. 결과 출력
System.out.println("두 날짜 사이의 간격:"+gap+"일");
※ Calendar <=> Date
[1] ★자주씀 Calendar를 Date로 변환
Calendar cal =Calendar.getInstance();
cal.set(2022,5,10); //
Date d = cal.getTime();
System.out.println(d.toLocaleString());
[2] Date를 Calendar로 변환
Date date = new Date(2022-1900,7,23); // 2022-08-23
Calendar cal2 = Calendar.getInstance();
cal2.setTime(date);
System.out.println("\n"+CalanderTest2.showDate(cal2));
'JAVA' 카테고리의 다른 글
[JDBC] 오라클 developer - JAVA eclipse 연동 / JDBC 프로그래밍 순서 (0) | 2022.04.01 |
---|---|
[JAVA] 형식화클래스 / Math 클래스의 메서드 / StringBuffer / StringTokenizer / 연산자 == (0) | 2022.03.15 |
[JAVA] HashSet / HashMap / ArrayList를 매개변수로 넣은 메서드 / Properties 클래스 (0) | 2022.03.10 |
[JAVA] throw / throws 떠넘기기 / 컬렉션 / ArrayList / 제네릭스 (0) | 2022.03.08 |
[JAVA] 클래스로 return 하기 / 배열로 return 하기 / 예외 try~catch / 다중catch (0) | 2022.03.07 |