gpt4 book ai didi

java - 为链表中的数组对象创建 'sort' 方法

转载 作者:行者123 更新时间:2023-12-01 13:12:41 27 4
gpt4 key购买 nike

我有一个项目,需要我们创建一个对象数组,然后将其放入链表中,我有点卡住了,因为我在编写/实现应该对链表进行排序的排序方法时遇到了麻烦。这是我的代码,说明我已经走了多远。顺便说一句,对象名称是“温度”;谢谢。

public class SelectionSort
{
private static void SelectionSort (Temperature[] array, int size)
{
for ( int i = 0; i < size - 1; i++ )
{
int indexLowest = i;
for ( int j = i + 1; j < size; j++ )
{
if ( array[j] < array[indexLowest] )
indexLowest = j;

if ( array[indexLowest] != array[i] )
{
Temperature temp = array[indexLowest];
array[indexLowest] = array[i];
array[i] = temp;
}// if
}//for j
}// for i
}// method
}

最佳答案

我认为,你的问题是线路

if ( array[j] < array[indexLowest] )

两者 - array[j]array[indexLowest] - 根据您的方法的签名,属于温度类型。所以它们不是原始类型,因此不能与 < 进行比较。这显然会导致编译器错误,您确实应该告诉我们。

要比较这样的对象,您有两种可能性:

1) 让类(class)Temperature实现Comparable<Temperature> 。这个接口(interface)会强制你添加一个方法public int compareTo(Temperatue other)到你的类(class)Temperature 。通过以下方式实现:

@Override
public int compareTo(Temperatue other) {
if (/* this is smaller than other */) {
return -1;
} else if (/* this is greater than other */) {
return 1;
} else {
return 0;
}
}

如果您愿意,您可以返回任何其他正整数或负整数。根据 Temperature 中的字段自行进行比较.

在有问题的行中使用它:

if ( array[j].compareTo(array[indexLowest]) < 0 )

2)为您的类温度编写一个比较器。

public class TemperatureComparator implements Comparator<Temperature> {
public int compare(Temperature t1, Temperature t2) {
if (/* t1 is smaller than t2 */) {
return -1;
} else if (/* t1 is greater than t2 */) {
return 1;
} else {
return 0;
}
}
}

逻辑是相似的。现在您可以在排序方法中使用此比较器

private static void SelectionSort (Temperature[] array, int size) {
Comparator<Temperature> comparator = new TemperatureComparator();
...
if ( comparator.compare(array[j], array[indexLowest]) < 0 )
...
}

关于java - 为链表中的数组对象创建 'sort' 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22727302/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com