所以基本上我需要制作一个包含学习时间的数组。第一个任务是获取总数并将其存储在我完成的数组中,
//student number total hours
Student Weekly study
Student0 34
Student1 28
Student2 20
Student3 31
Student4 32
Student5 28
Student6 37
Student7 41
第二项任务是安排学生最长的时间。 我首先将实际学习的时间安排在一个数组中:
public static void sort(Integer[] array){
Integer studentNumber [] = new Integer[8];
Integer temp[] = new Integer[8];
for (int i = 0; i < array.length;i++){
temp[i] = array[i];//declaring value of index so it doesn't change
}
Arrays.sort(array, Collections.reverseOrder());//sorted the original array in descending order
}
然后我需要显示学生(通过他们的原始索引号来识别他们,例如,student0有34个),所以我进行了一个循环以比较两个值(如果确实如此),那么它将使用'temp'的索引: / p>
for (int i = 0; i < temp.length;i++){
for (int j = 0; j < array.length;j++){
if (array[i].equals(temp[j] )){
System.out.println("Student" + j + "\t " + array[i]);
break;
}
}
输出:
Student7 41
Student6 37
Student0 34
Student4 32
Student3 31
Student1 28
Student1 28
Student2 20
如您所见,它应该在应该显示5之后显示两次Student1,但是由于它们具有相同的值,因此它寻找的第一个值等于它。
我正在寻找解决方案,并且试图创建一个变量来检查索引是否已被访问:
int pointer =0;
for (int i = 0; i < temp.length;i++){
for (int j = 0; j < array.length;j++){
if (array[i].equals(temp[j] )&& i > pointer){
System.out.println("Student" + j + "\t " + array[i]);
break;
}
}
pointer++;
}
所以我的问题是,有没有一种方法可以检查/跳过已经访问过的重复值的索引
答案 0 :(得分:0)
Java有一些内置工具,使用它们比编写自己的简单算法更容易。
使用LinkedHashMap
将数据存储为键值对。然后迭代该地图,并通过使用Comparator
比较值将它们插入到另一个地图中。
LinkedHashMap<String, Integer> students = new LinkedHashMap<>(),
sortedStudents = new LinkedHashMap<>();
students.put("Student0", 34);
students.put("Student1", 28);
students.put("Student2", 20);
students.put("Student3", 31);
students.put("Student4", 32);
students.put("Student5", 28);
students.put("Student6", 37);
students.put("Student7", 41);
List<Map.Entry<String, Integer>> list = new ArrayList<>(students.entrySet());
list.sort(Entry.comparingByValue(new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
if (o1.intValue() < o2.intValue()) {
return 1;
} else if (o1.intValue() > o2.intValue()) {
return -1;
}
return 0;
}
}));
for (Entry<String, Integer> entry : list) {
sortedStudents.put(entry.getKey(), entry.getValue());
}
System.out.println(sortedStudents);
输出:
{Student7=41, Student6=37, Student0=34, Student4=32, Student3=31, Student1=28, Student5=28, Student2=20}