정리정돈 개발블로그~
[19일차] 국비 교육 본문
시험 데이
<성적순 정렬>
package 성적순정렬;
//-학생에 대한 성적순 정렬하기 - comparable
// 5명에 대한 이름과 성적을 입력 받음
// 성적이 높은 사람 순으로 정렬
// TreeSet (트리형태의 자료 구조이며, 트리 생성 시 자동 정렬 특성을 가지고 있음)
// 클래스 타입으로 트리를 구성하기 위해서는 검색 조건의 기준을 만들어 줘야 한다.
import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeSet;
public class gradeArray {
public static void main(String[] args) {
/* System.out.print("5명의 이름과 성적을 입력하세요 : ");
Scanner sc = new Scanner(System.in);
String[] name = new String[5];
int[] grade = new int[5];
// 트리셋에 값이 대입될때 자동 정렬 됩니다.
// 값이 입력되면 현재 입력된 값이 루트노드 기준으로 큰지 작은지 판단해서 저장 위치 결정 함.*/
TreeSet<gradeCompareTo> treeSet = new TreeSet<>();
/*for(int i = 0; i< 5; i++) {
name[i] = sc.next();
grade[i] = sc.nextInt();
// 객체를 바로 생성
treeSet.add(new gradeCompareTo(name[i], grade[i]));
}
for(gradeCompareTo e : treeSet){
System.out.print(e.grade + " ");
}*/
treeSet.add(new gradeCompareTo("우영우" , 95));
treeSet.add(new gradeCompareTo("동그라미", 65));
treeSet.add(new gradeCompareTo("이준호", 77));
treeSet.add(new gradeCompareTo("최수연", 88));
treeSet.add(new gradeCompareTo("정명석", 97));
Iterator<gradeCompareTo> iterator = treeSet.iterator();
while (iterator.hasNext()){
gradeCompareTo e = iterator.next();
System.out.print(e.name+ " ");
}
}
}
출력
정명석 우영우 최수연 이준호 동그라미
package 단어정렬;
// 개수입력 받음 (ex.15개)
// 개수 만큼의 단어를 입력(ex. 15개의 단어입력)
// 길이가 짧은 것이 먼저 오고, 길이가 같은 경우 사전 순 정렬, 동일 단어는 중복 제거
import java.util.*;
public class dicArray {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("개수 입력 : ");
int n = sc.nextInt();
String[] word = new String[n];
sc.nextLine(); // 버퍼 비우기(개행문자가 다음 입력값으로 들어가는 걸 방지)
for(int i = 0; i< word.length; i++){
word[i] = sc.nextLine(); // 엔터키 기준으로 입력 받기 위해 nextLine()
}
// set 컬렉션 : 순서를 보장해주지 않음, 중복 허용 하지 않음
// asList() : 배열을 컬렉션에 넣을 때 사용하는 메소드
// 중복 제거
HashSet<String> hashSet = new HashSet<>(Arrays.asList(word));
// String[0] : 원래 생성된 크기 만큼을 넘긴다는 의미
word = hashSet.toArray(new String[0]);
Arrays.sort(word, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if(o1.length() == o2.length()){
return o1.compareTo(o2); // 길이가 같으면 사전순 정렬
}else{
return o1.length() - o2.length(); // 만약 앞에 것이 길다면 양수(양수가 반환되면 정렬조건)
}
}
});
System.out.println(Arrays.toString(word));
}
}
출력
개수 입력 : 8
it
motr
apple
banana
gogo
hihi
it
[it, gogo, hihi, motr, apple, banana]
mo
Process finished with exit code 0
'국비학원 교육 일지' 카테고리의 다른 글
[21일차] 국비 교육 (0) | 2022.08.17 |
---|---|
[20일차] 국비 교육 (0) | 2022.08.16 |
[18일차] 국비 교육 (0) | 2022.08.11 |
[17일차] 국비교육 (0) | 2022.08.10 |
[16일차] 국비교육 (0) | 2022.08.09 |