【发布时间】:2019-04-21 05:11:27
【问题描述】:
我正在尝试使用我的两种方法minimumPosition() 和maximumPosition(),使用选择排序按字母顺序按字母顺序对名称进行排序ArrayList<>。我在比较Strings 时遇到了麻烦,因为它说.compareToIgnoreCase 需要一个数组,但找到了ArrayList<String>。我不确定是否有任何其他方法可以比较 ArrayList<> 以按字母顺序打印出我的姓名。
我尝试将我的返回方法类型从 int 切换到 String 但这没有帮助,我还尝试将一些变量类型从 int 切换到 String 只是为了看看是否任何事情都会奏效,但它没有。我在网上搜索以找到解决方案,但我只找到了如何对整数和数组使用选择排序,而不是 ArrayLists。我的代码中的整数ArrayList<> 是我分配的第二部分处理线性和二进制搜索,所以忽略它。我的主要关注点是ArrayList<> 的名称。任何帮助将不胜感激,下面是我的代码示例。
package classwork_additional1;
import java.util.ArrayList;
import java.util.Collections;
public class Classwork_Additional1 {
public static void main(String[] args){
ArrayList<String> array = new ArrayList<>();
array.add("Mary");
array.add("Mike");
array.add("Michael");
array.add("Ann");
array.add("Tom");
array.add("Tommy");
array.add("Bob");
ArrayList<Integer> integers = new ArrayList<>();
integers.add(10);
integers.add(10);
integers.add(5);
integers.add(8);
integers.add(10);
integers.add(7);
integers.add(10);
}
public static void sort(ArrayList<String> array)
{
for (int i = 0; i < array.size() - 1; i++)
{
int minPos = minimumPosition(array, i);
swap(array, minPos, i);
}
}
public static void swap(ArrayList<String> array, int i, int j)
{
String temp = array.get(i);
array.set(i, array.get(j));
array.set(j, temp);
}
private static int minimumPosition(ArrayList<String> array, int from){
int minPos = from;
for (int i = from + 1; i < array.size(); i++)
{
if (array.get(i).compareToIgnoreCase(array[minPos]) < 0)
minPos = i;
}
return minPos;
}
private static int maximumPosition(ArrayList<String> array, int from)
{
int maxPos = from;
for (int i = from + 1; i < array.size(); i++)
{
if (array.get(i).compareToIgnoreCase(array[maxPos]) > 0)
maxPos = i;
}
return maxPos;
}
我希望这些名字按字母顺序出现,从“Ann”开始到“Tommy”,并且在另一行从“Tommy”回到“Ann”。
【问题讨论】:
-
你甚至没有从
main调用sort -
我还无法让我的方法工作尚未测试出来,我的
if语句出现错误,告诉我它需要array而不是ArrayList<> -
不,它不是这么说的。它的意思是您不能使用
array[minPos],因为array不是 数组,并且您只能使用[]访问数组的元素,而不是ArrayList 的元素。在询问错误时,请始终发布准确且完整的错误消息,而不是转述它。
标签: java sorting arraylist selection-sort