我有一個Arraylist溫度和天。我使用插入排序方法對arraylist進行排序。當我打印出來的時候,它不會以打印出來的方式打印出來:76,84,81,88,87。難道是因爲我把Collections.sort(dailytemps)這一行註釋掉了嗎?它示數出來,所以我評論說出來排序錯誤的數組打印錯誤
這裏是我的代碼:
import java.io.*;
import java.util.Scanner;
import java.util.Arrays;
public class DailyTemperature
{
//variables
private double temperature;
private String day;
//getTemp & setTemp methods
public double getTemp()
{
return temperature;
}
public void setTemp(double newTemp)
{
temperature = newTemp;
}
//getDay & setDay methods
public String getDay()
{
return day;
}
public void setDay(String newDay)
{
day = newDay;
}
//constructor
public DailyTemperature(String day, double temperature)
{
this.day = day;
this.temperature = temperature;
}
//compareTo method used for Comparable interface
public int compareTo(DailyTemperature other)
{
if (temperature < other.temperature) return -1;
if (temperature == other.temperature) return 0;
return -1;
}
//toString method to print out original arraylist contents and sorted arraylist contentes
public String toString()
{
return("Day of Week: " + this.getDay() +
" - Temperature: " + this.getTemp());
}
}
import java.io.*;
import java.util.Scanner;
import java.util.ArrayList;
public class DailyTemperatureList
{
public static void main (String [] args)
{
ArrayList<DailyTemperature> dailytemps = new ArrayList<DailyTemperature>();
dailytemps.add(new DailyTemperature("Mon", 87.1));
dailytemps.add(new DailyTemperature("Tue", 88.3));
dailytemps.add(new DailyTemperature("Wed", 81.2));
dailytemps.add(new DailyTemperature("Thu", 84.0));
dailytemps.add(new DailyTemperature("Fri", 76.3));
//original list printout
System.out.println("Original List:");
System.out.println(dailytemps.toString());
System.out.println(" "); //empty line
//method to sort array list
insertionSort(dailytemps);
//sorted list printout
System.out.println("Sorted List:");
System.out.println(dailytemps.toString());
//Collections.sort(dailytemps);
}
static void insertionSort(ArrayList<DailyTemperature> dailytemps)
{
DailyTemperature temp = null;
int position = 0;
//loop from 2nd element on
for (int i = 1; i < dailytemps.size(); i++)
{
temp = dailytemps.get(i);
position = i;
while (0 < position && temp.compareTo(dailytemps.get(position - 1)) < 0)
{
dailytemps.set(position, dailytemps.get(position - 1));
position--;
}
dailytemps.set(position,temp);
}
}
}
謝謝你,我從我的電腦複製到我們的學校帳戶,鍵入-1而不是1.只是一個問題。在DailyTemperature類中,我是否必須實現可比較?因爲它沒有它的工作。 –
你最好應該實現'可比'。如果沒有它,嘗試'Collections.sort()',你會得到一個異常。理想情況下,該類應該準備好用於'Collections' API以及像TreeSet一樣的排序集合。 –
由於您正在使用自定義排序並直接訪問「compareTo」方法,因此您不需要執行「Comparable」。例如,如果您想使用'Collections.sort',則必須使用'Comparable'。 –