Сортировка нескольких советов по массивам?

Эй, ребята и девочки.

Предыстория: Я работаю над программой с высокими оценками для домашней работы, которая запрашивает 5 имен и 5 баллов. После ввода имен с соответствующими баллами программа сортирует два массива ArrayLists по наивысшей оценке. Наконец, он отображает имена с их оценками в отсортированном порядке.

Вопрос: У меня есть дьявол времени, пытаясь сортировать ArrayLists, вы советуете сортировать ArrayLists?

Код:

import java.util.*;

public class Assignment6
{
 public static void main(String args[])
 {
 ArrayList<string> names = new ArrayList();
 ArrayList<integer> scores = new ArrayList();

 initializeArrays(names, scores);
 //sortArrays(names, scores);
 displayArrays(names, scores);
 }

 public static void initializeArrays(ArrayList names, ArrayList scores)
 {
 Scanner in = new Scanner(System.in);
 for(int i=0; i<5; i++)
 {
 System.out.println("Enter the name for score # " + (i+1) + ": ");
 names.add(in.next());
 System.out.println("Enter the score for score # " + (i+1) + ": ");
 scores.add(in.next());
 }
 }

 public static void sortArrays(ArrayList names, ArrayList scores)
 {
 for(int i=0; i<5; i++)
 {
 if(scores[i] < scores[i+1])
 {
 Collections.swap(scores,a, b);
 Collections.swap(names,a, b);

 }
 }
 }

 public static void displayArrays(ArrayList names, ArrayList scores)
 {
 System.out.println("Top Scorers: ");
 System.out.println(names);
 System.out.println(scores);
 }


}
</integer></string>
3 ответа

Создайте один объект с полями: name и score с помощью implements Comparable. Затем, имея ТОЛЬКО один ArrayList используйте Collections.sort(list);


Вы можете обернуть оба счета и имя в один объект и сохранить его в списке.

class Result implements Comparable<result>{

 private String name;

 private int score;

 public String getName() {
 return name;
 }

 public void setName(String name) {
 this.name = name;
 }

 public int getScore() {
 return score;
 }

 public void setScore(int score) {
 this.score = score;
 }

 @Override
 public int compareTo(Result other) {
 return this.score - other.score;
 }

}
</result>

Теперь вы можете использовать Collections.sort(List<result>)</result> чтобы отсортировать их на основе самого высокого балла.


хорошо, вы хотите напечатать что-то вроде этого A-{Bob, Alex,...}, где Bob - это имя, а A - область видимости, вы можете сделать это, используя один объект, как описано Алексом, но если его домашняя работа Я думаю, что ваш учитель хочет увидеть некоторую структуру данных по компьютерным наукам, в этом случае Associative_array будет лучше. Вы можете реализовать его на своей стороне или использовать java-реализацию. Java предоставляет нам Map [T, V] и реализацию, для вашего случая это TreeMap, где T - область, а V - список имен, потому что у многих людей может быть одинаковая область видимости. Итак, структура результата будет такой, как

Map<string, list<string="">> sortedScopes = new TreeMap<>();
</string,>

и используя:

List<string> names = sortedScopes.get(scope);
if(names == null){
 names = new ArrayList<>();
sortedScopes.put(scope, names);
}

names.add(name)
</string>

В этом решении у вас будет всего 2 метода инициализации и отображения, сортировка по области будет выполняться по требованию

licensed under cc by-sa 3.0 with attribution.