gpt4 book ai didi

java - 是否可以使用 ArrayList 获取索引值?

转载 作者:行者123 更新时间:2023-12-01 23:20:03 25 4
gpt4 key购买 nike

我有一项家庭作业,其中我必须完成已启动项目中的某些方法 stub 。我必须完成的方法之一是“冒泡排序”算法。我的代码:

public void bubbleSort(ArrayList <Comparable> list){
// O(n^2) (quadratic sorting algorithm)
for (int i = 0; i < list.size(); i++){
for(int j = 0; j < list.size() - 1; j++){
if(list.get(j).compareTo(list.get(j + 1)) > 0){
int temp = list.get(j);// this says "required int found java.lang.Comparable"
list.set(j, list.get(j + 1));
list.set(j + 1, temp);
}
}
}
}

因为参数是<Comparable>我不能做平常的int temp = list.get(j);就像我可以用 ArrayList<Integer> 做的那样。我会改变 <Comparable><Integer> (然后还修改 .compareTo() 部分)但我想用给出的内容完成作业。基本上我怎样才能获得索引 j 的值?

最佳答案

问题是您认为您需要知道Comparable内部有什么。你不知道。您正在使用的由该接口(interface)定义的compareTo()方法告诉您需要知道的一切,这就是重点。这样您的排序就可以对实现该接口(interface)的任何进行排序。您只需移动Comparable即可。

而不是:

int temp = list.get(j);

您需要:

Comparable temp = list.get(j);

如果你看JavaDoc for Integer您会注意到它实现了 Comparable 接口(interface),因此您可以将排序调用为:

bubbleSort(myList);

其中 myList 声明为:

ArrayList<Integer> myList;

还值得注意......它确实应该是:

public void bubbleSort(List<Comparable>) {

而不是特定的ArrayList - 这样任何类型的List都可以传入。

关于java - 是否可以使用 ArrayList<Comparable> 获取索引值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20736420/

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