Java는 Comparable을 사용하여 정렬 문제를 해결합니다.

3533 단어 JavaComparable정렬
본고는 Java가 Comparable를 사용하여 정렬 문제를 해결하는 방법을 실례로 다루고 있다.여러분에게 참고할 수 있도록 나누어 드리겠습니다.구체적인 실현 방법은 다음과 같다.
한 차례의 역도 경기의 경기 규칙은 선수의 성적은 성공적으로 들어올린 총 무게로 순서를 정하고 총 무게가 많은 것을 들어올려 앞에 놓는다.총중량을 들어올리면 체중에 따라 순서를 정하고 체중이 가벼운 것이 앞에 선다.프로그램이 데이터 파일을 읽어 입력으로 하고 상기 규칙에 따라 정렬한 후 선수 번호를 출력하도록 요구한다.데이터 파일은 다음과 같이 설명한다. 현재 5명의 선수가 선수 번호, 성공적으로 들어올린 총 무게와 체중, 예를 들어 데이터 파일 데이터4.txt, 예제 내용:

<p>
<no>1</no>
<lw>140</lw>
<bw>54</bw>
</p>
<p>
<no>2</no>
<lw>155</lw>
<bw>53</bw>
  </p>
<p>
<no>3</no>
<lw>140</lw>
<bw>42</bw>
  </p>
<p>
<no>4</no>
<lw>140</lw>
<bw>55</bw>
  </p>
<p>
<no>5</no>
<lw>130</lw>
<bw>46</bw>
</p>
우선 제가 해결해야 할 것은 파일 해석 문제입니다.
어떻게 파일 내용을 원하는 데이터로 해석합니까? 즉, 각 선수의 번호, 성적과 체중을 추출하는 것입니다.
나는 실체 Person으로 이 속성들을 봉인한다
전체 코드:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
public class forth {
public static void main(String[] args) {
ArrayList<Person> list=new ArrayList<Person>();
try {
FileReader fr=new FileReader("c:\\data.txt");
BufferedReader br=new BufferedReader(fr);
String str=null;
int num=0;
int score=0;
int weight=0;
int i=0;
while((str=br.readLine())!=null)
{
  i++;
  if(i%5==2)
  {
str=str.trim().substring(4,str.length()-5);
num=Integer.parseInt(str);
str=br.readLine().trim();
str=str.substring(4,str.length()-5);
score=Integer.parseInt(str);
i++;
str=br.readLine().trim();
str=str.substring(4,str.length()-5);
weight=Integer.parseInt(str);
i++;
Person p=new Person(num,score,weight);
list.add(p);
  }
  else 
  continue;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
Person[] plist=new Person[list.size()];
list.toArray(plist);
Arrays.sort(plist);
for(int i=0;i<plist.length;i++)
{
System.out.print(plist[i].getNum()+". " +plist[i].getScore()+" "+plist[i].getWeight()+"
\r"); } } } class Person implements Comparable<Person>{ private int num; private int weight; private int score; public Person(int num,int score,int weight){ this.num=num; this.score=score; this.weight=weight; } @Override public int compareTo(Person other) { if(this.score>other.score)return -1; else if(this.score<other.score) return 1; else return this.weight>other.weight?1:-1; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } }
본고에서 기술한 것이 여러분의 자바 프로그램 설계에 도움이 되기를 바랍니다.

좋은 웹페이지 즐겨찾기