Java 无法使用选择排序按字母顺序对名称数组列表进行排序
我正在尝试使用选择排序对名称的Java 无法使用选择排序按字母顺序对名称数组列表进行排序,java,sorting,arraylist,selection-sort,Java,Sorting,Arraylist,Selection Sort,我正在尝试使用选择排序对名称的ArrayList进行排序,使用我的两种方法minimumPosition()和maxiumposition()按字母顺序对名称进行递增和递减排序。比较字符串时遇到问题,因为它指出。CompareTignoreCase需要数组,但找到了数组列表。我不确定是否有其他方法可以比较ArrayList以按字母顺序打印我的姓名 我尝试过将返回方法类型从int切换到String,但是没有用,我还尝试过将一些变量类型从int切换到String,只是想看看是否有任何东西可以工作,但
ArrayList
进行排序,使用我的两种方法minimumPosition()
和maxiumposition()
按字母顺序对名称进行递增和递减排序。比较字符串
时遇到问题,因为它指出。CompareTignoreCase
需要数组,但找到了数组列表
。我不确定是否有其他方法可以比较ArrayList
以按字母顺序打印我的姓名
我尝试过将返回方法类型从int
切换到String
,但是没有用,我还尝试过将一些变量类型从int
切换到String
,只是想看看是否有任何东西可以工作,但没有。我已经在网络上搜索过这个问题的解决方案,但我只找到了如何对整数和数组使用选择排序,而不是数组列表。我的代码中整数的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;
}
package classwork\u additional1;
导入java.util.ArrayList;
导入java.util.Collections;
公共课堂作业\u附加1{
公共静态void main(字符串[]args){
ArrayList数组=新的ArrayList();
数组。添加(“玛丽”);
数组。添加(“Mike”);
数组。添加(“迈克尔”);
数组。添加(“Ann”);
数组。添加(“Tom”);
数组。添加(“Tommy”);
数组。添加(“Bob”);
ArrayList整数=新的ArrayList();
整数。加(10);
整数。加(10);
整数。加(5);
整数。加(8);
整数。加(10);
整数。加(7);
整数。加(10);
}
公共静态无效排序(ArrayList数组)
{
对于(int i=0;i0)
maxPos=i;
}
返回maxPos;
}
我希望这些名字能按字母顺序出现,从“安”开始,到“汤米”,再到“汤米”,再到“安”。只要换个名字就行了
if(array.get(i).compareToIgnoreCase(array[minPos]) < 0)
if(array.get(i).compareToIgnoreCase(array[minPos])<0)
到
if(array.get(i).compareTignoreCase(array.get(minPos))<0)
如果您试图在一个特定索引处获取元素两次,为什么要使用不同的方法来尝试呢?您甚至没有从
main
调用sort
,我还无法让我的方法工作以测试它,如果语句告诉我它需要数组,我会在上出错>而不是ArrayList
不,这不是它说的。它说的是你不能使用array[minPos]
,因为array
不是数组,你只能使用[]
访问数组元素,而不是ArrayList的元素。当询问错误时,始终发布准确完整的错误消息,而不是对其进行解释。
if(array.get(i).compareToIgnoreCase(array.get(minPos)) < 0)