๋ฌธ์
์์์ ์์น์ ์๋ ๋ด์ฉ์ด ๋ด๊ธด ํ ์คํธ ํ์ผ์ ๋ง๋ค๊ณ ,
ํด๋น ํ์ผ์ ์ฝ์ด ์ด์ ์ ๊ตฌํ๊ณ ์ด์ ์ด ๋์ ์ฌ๋ ์์ผ๋ก ์ด๋ฆ๊ณผ ์ด์ ์ถ๋ ฅํ๊ธฐ
(๋จ, ์ด์ ์ด ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ด๋ฆ ์์ผ๋ก ์ ๋ ฌ)
.txt
์์ ์ง 99 78 45
์ด์์ง 34 56 100
์ด์ค์ง 56 78 34
์ฐ์์ฐ 99 98 97
์ ๋ช
์ 96 99 98
์ด์คํธ 77 87 88
๊ถ๋ฏผ์ฐ 96 93 90
์ต์์ฐ 97 88 87
๋๊ทธ๋ผ๋ฏธ 45 34 67
๋ฏธ๋ฏธ 45 56 78
๐ธ : ๋ฌธ์ ๋ฅผ ํ์ ํ ๋ค์๋ ํด๋น ์ฒ๋ฆฌ ์์๋ฅผ ๋จผ์ ์ ํด๋๋ ๊ฒ์ด ์ข๋ค.
(1) ํ์ผ์ ์ฝ์ด์จ๋ค.
โScanner
(2) ์ ๋ณด๋ฅผ ๋จ์๋ณ๋ก ์ชผ๊ฐ ๋ค.
โnextLine() : ์ค๋ฐ๊ฟ ๊ธฐ์ค์ผ๋ก ๋๋ , split() : ๊ณต๋ฐฑ ๊ธฐ์ค์ผ๋ก ๋๋๋ฉด ๋ ๊ฒ ๊ฐ์
(3) ๊ทธ ์ ๋ณด๋ฅผ ๊ฐ์ฒด์ ๋ด๋๋ค.
โTreeSet : ์๋์ ๋ ฌ ํ์ง๋ง ์ค๋ณต์ ์ ๊ฑฐํ๊ธฐ ๋๋ฌธ์ Comparable ์์ ํ ์ ๋ ฌ์กฐ๊ฑด ๋ฐ๋์ ํด์ค์ผ ํจ.
๐ถ : ๊ฐ๊ตด. ์ง๋ฌธ์ด ์๋ค. ๋ด์ ๋ HashSet์ ์จ๋ ๋๋?
๐ธ : ์๋ผ. ์ด์ ๋ ์๋ ์์ธํ ์ค๋ช ํด์ฃผ์ง.
(4) ์ ๋ ฌํ๋ค.
โComparable
(5) ์ถ๋ ฅํ๋ค.
โํฅ์๋ for๋ฌธ
๐ธ : HashSet๊ณผ TreeSet์ ๊ธฐ๋ณธ์ ์ธ ์ ๋ณด๋ Java ๊ฒ์ํ์ ์ ๋ฆฌํด๋์์ผ๋ ์๊ฑฐ๋ผ ์๊ฐํ๊ณ .. ์ฐจ์ด์ ๋ง ๋งํด์ฃผ๊ฒ ๋ค.
TreeSet : The elements are ordered using their natural ordering, or by a Comparator provided at set creation time, depending on which constructor is used.
HashSet : It makes no guarantees as to the iteration order of the set; in particular, it does not guarantee that the order will remain constant over time.
์ ์ค๋ช ๊ณผ ๊ฐ์ด TreeSet์ ์์ฑ๋๋ ๋์์ ์๋์ ๋ ฌ์ด ๋๋ค. ํน์ Comparator(Comparable)์์ ์ง์ ํ ์์๋ฅผ ์ฌ์ฉํ ์๋ ์๋ค. ๋ฐ๋ฉด์ HashSet์ ์์๋ฅผ ๋ณด์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ Comparator๋ฅผ ์ด์ฉํ๋ค ํด๋ ์ ๋ ฌ์ด ๋์ง ์๋๋ค.
๋ฐ๋ผ์, ์ด ๋ฌธ์ ์์๋ ๋ฐ๋์ TreeSet์ ์ฌ์ฉํด์ผ ์ํ๋๋๋ก ์ถ๋ ฅํ ์๊ฐ ์๋ค.
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.HashSet;
import java.util.Scanner;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) throws FileNotFoundException {
TreeSet<Student> hs = new TreeSet<>();
FileInputStream fis = new FileInputStream("C:/Dev/PracticeJava/src/์
์ถ๋ ฅ์คํธ๋ฆผ๋ฌธ์ /score.txt");
Scanner sc = new Scanner(fis);
while(sc.hasNext()) {
String line = sc.nextLine();
String[] strArr = line.split(" ");
hs.add(new Student(strArr[0], Integer.parseInt(strArr[1]), Integer.parseInt(strArr[2]),Integer.parseInt(strArr[3])));
}
for(Student e : hs) {
System.out.println("์ด๋ฆ : " + e.getName());
System.out.println("์ด์ : " + e.getTotalScore());
System.out.println("=============================");
}
}
}
public class Student implements Comparable<Student>{
String name;
int korScore;
int engScore;
int mathScore;
public Student(String name, int korScore, int engScore, int i) {
this.name = name;
this.korScore = korScore;
this.engScore = engScore;
this.mathScore = mathScore;
}
public String getName() {
return name;
}
public int getTotalScore() {
return korScore + engScore + mathScore;
}
@Override
public int compareTo(Student o) {
if(this.getTotalScore() == o.getTotalScore()) return this.name.compareTo(o.name);
return o.getTotalScore() - this.getTotalScore();
}
}
์ด๋ฆ : ์ฐ์์ฐ
์ด์ : 197
=============================
์ด๋ฆ : ์ ๋ช
์
์ด์ : 195
=============================
์ด๋ฆ : ๊ถ๋ฏผ์ฐ
์ด์ : 189
=============================
์ด๋ฆ : ์ต์์ฐ
์ด์ : 185
=============================
์ด๋ฆ : ์์ ์ง
์ด์ : 177
=============================
์ด๋ฆ : ์ด์คํธ
์ด์ : 164
=============================
์ด๋ฆ : ์ด์ค์ง
์ด์ : 134
=============================
์ด๋ฆ : ๋ฏธ๋ฏธ
์ด์ : 101
=============================
์ด๋ฆ : ์ด์์ง
์ด์ : 90
=============================
์ด๋ฆ : ๋๊ทธ๋ผ๋ฏธ
์ด์ : 79
=============================
'๐๏ธ Backend > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ(Java) - JDBC(Oracle) : ์ด๋ก (?) (0) | 2023.02.27 |
---|---|
์๋ฐ(Java) - ๊ฐ์ฒด ์ง๋ ฌํ(Serializable) ์์ . ์นดํ ๋ฉ๋ด ๋ง๋ค๊ธฐ (1) | 2023.02.14 |
์๋ฐ(Java) - ์ ์ถ๋ ฅ ์คํธ๋ฆผ (0) | 2023.02.09 |
์๋ฐ(Java) - ์คํธ๋ฆผ(Stream) (0) | 2023.02.08 |
์๋ฐ(Java) - ๋๋ค(Lambda) (0) | 2023.02.08 |