현재 ID 목록이 있고 관련 점수가있는 곳에 문제가 있습니다.AddInOrder 최고의 구조? Java 숙제
가ID : SCORE
1 : 12
2 : 15
3 : 2
4 : 99
I 원하는 예
이들을 반복하고 t를 더한다. 헴을 점수의 내림차순으로 정렬한다. 그래서 출력은
{4,2,1,3}
자바에서이 일을하는 가장 좋은 방법은 무엇입니까
같이 보일 것인가? 대기열?감사 필립
현재 ID 목록이 있고 관련 점수가있는 곳에 문제가 있습니다.AddInOrder 최고의 구조? Java 숙제
가ID : SCORE
1 : 12
2 : 15
3 : 2
4 : 99
I 원하는 예
이들을 반복하고 t를 더한다. 헴을 점수의 내림차순으로 정렬한다. 그래서 출력은
{4,2,1,3}
자바에서이 일을하는 가장 좋은 방법은 무엇입니까
같이 보일 것인가? 대기열?감사 필립
나는 이것이 Comparable
인터페이스를 배우기에 좋은 시간이라고 생각합니다. score
으로 비교하는 클래스를 만들 수 있으며 toString()
을 호출하면 id
을 인쇄합니다. 앞에서 언급했듯이 Comparator
사용자 정의를 사용하는 것만으로도 충분하지만, Comparable
으로 작업 한 적이 없다면 먼저 배우는 것이 좋습니다.여기
당신이 알아야 할 두 개체가 O1 및 유형 Comparable<T>
의 O2를 들어, o1.compareTo(o2)
반환 것입니다 :
이 정보는 사용자가 사용자 지정 클래스에 compareTo
함수를 쓰는 데 도움이됩니다.
클래스를 작성하고 나면 Java의 Collections
클래스는 을 Comparables
으로 정렬하는 sort
메소드를 제공합니다. 쉬운! 세트가 여러 개의 동일한 요소를 금지하는 것이, http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html#sort%28java.util.List%29
는 Collection.sort(list, comparator)
는 적절하지 않다?
그것은 "AddInOrder"아니다
가 (또는, Comparable
인터페이스를 구현할 수 클래스가 내부적으로 비교 논리를 제공하기 위해)
하지만 (comparator
클래스가 Comparator
을 구현하고 비교 논리를 지정하는 것입니다) 귀하의 요구 사항을 충족시킵니다.
여기에는 여러 옵션이 있습니다. 마지막에 목록을 정렬하면 용도에 충분할 수 있습니다.
주문 불변식이 항상 유지되도록하려면 정렬 된 목록/트리가 있어야합니다. Java는 PriorityQueue 클래스를 제공합니다.
그러나 구현 세부 사항으로는 ID
과 Score
을 모두 캡슐화하는 클래스를 만들어 클래스를 특정 정렬 선택 항목과 비교할 수 있어야합니다.
정렬 된 집합 (예 : a tree set)에 항목을 하나씩 삽입하십시오. 클래스를 사용하여 id : score를 잡고 점수에 따라이 클래스의 두 인스턴스를 비교하는 비교자를 작성합니다.
EDIT : 이미 목록이있는 경우,이 경우 컬렉션을 정렬하는 것이 좋습니다.
가주의 :
는 여기에 대한 링크입니다. 여기에 괜찮을 수도 있습니다. – notnoop