기본적으로 학생 및 마크 입력 파일을 영문자 및 숫자 순으로 정렬하려고합니다. 나는 4 개의 반을 가지고 있지만 어떤 순서로든 그 반점을 가진 학생을 인쇄 할 수는 없습니다. 영문자와 숫자 순으로 혼자있게하십시오. 결과 인쇄를 전체 또는 일부 도움말로 얻는 방법에 대한 도움은 매우 감사하겠습니다. 다음은 4 개의 클래스와 입력 파일에 사용 된 코드입니다.문자열 및 별도 클래스가있는지도를 사용하여 콜렉션 정렬
입력 파일 :
Simon 4
Anna 10
Simon 4
Anna 9
Anna 5
Edward 10
코드 :이 키의 이상 그것이 순서를 정의하지 않도록
package part1;
import java.io.FileReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
Map<String, StudentMath> map = new HashMap<String, StudentMath>();
String input = "data/results.txt";
Scanner scan = new Scanner(new FileReader(input));
while (scan.hasNextLine()) {
String line = scan.nextLine();
String[] in = line.split(" ");
String name = in[0];
int mark = Integer.parseInt(in[1]);
//System.out.println(name + ":" + mark);
StudentMath stud = map.get(name);
if (stud == null) {
stud = new StudentMath(name, mark);
map.put(name, stud);
stud.sum(mark);
}
}
for (String s: map.keySet()){
System.out.println(s);
}
}
}
package part1;
public class StudentMath extends Main {
public String name;
public int mark;
public StudentMath(String s, int n) {
name = s;
mark = n;
}
public String getName() {
return name;
}
public int getMark() {
return mark;
}
public int sum() {
int tot = mark + mark;
return tot;
}
public boolean equals(Object o) {
if (o instanceof StudentMath) {
StudentMath m = (StudentMath) o;
return (name == m.name) && (mark == m.mark);
}
else {
return false;
}
}
}
package part1;
import java.util.Comparator;
public class NameCompare implements Comparator<StudentMath> {
public int compare(StudentMath g1, StudentMath g2) {
return g1.name.compareTo(g2.name);
}
}
package part1;
import java.util.Comparator;
public class MarkCompare implements Comparator<StudentMath>{
public int compare(StudentMath g1, StudentMath g2) {
return g2.mark - g1.mark;
}
}
에 정확하게 당신이'list' 당신이 삽입 순서로 다스 려하는 순서 collection.Unless하지 – amit