gpt4 book ai didi

java - 如何根据字符串的长度对 List 进行排序并打印前 N 个元素

转载 作者:行者123 更新时间:2023-12-02 13:24:22 24 4
gpt4 key购买 nike

您的程序应该读取输入文件(程序的第一个参数)。第一行包含数字“N”的值,后跟多行。您可以假设输入文件的格式正确,并且第一行的数字(即“N”)是有效的正整数。例如

这是我的输入:

2
Hello World

CodeEval
Quick Fox
A
San Francisco

期望的输出应该是:

San Francisco
Hello World

这是我的代码:

 class Longest
{
public static void main(String args[]) throws FileNotFoundException
{
BufferedReader in = null;
List<String> myList = new ArrayList<String>();
try
{
in = new BufferedReader(new FileReader("C:\\filename.txt"));
String str;
while ((str = in.readLine()) != null)
{
if (str.length() == 0) continue;

myList.add(str);
}
}
catch (IOException e)
{
e.printStackTrace();
}
System.out.println("Contents of the ArrayList : "+myList);
System.out.println("Size of the ArrayList : "+myList.size());
String s = myList.remove(0);
System.out.println(System.getProperty("line.separator"));
System.out.println("Number of lines to be printed : "+s);
System.out.println("After removing first element of ArrayList : "+myList);
System.out.println("Size of the ArrayList : "+myList.size());

Comparator comparator=Collections.reverseOrder();
Collections.sort(myList,comparator);
System.out.println("After sorting ArrayList in Descending Order :"+myList);


int x = Integer.parseInt(s);
System.out.println(System.getProperty("line.separator"));


for (String s1 : myList) {
System.out.println(s1);
}
System.out.println(System.getProperty("line.separator"));

for(int i=0; i<x; i++){
System.out.println(myList.get(i));
}

}

}

但是我得到这个输出:

San Francisco
Quick Fox

我哪里出错了?

最佳答案

默认排序,将根据字母索引对列表进行排序。如果您想根据其他条件进行排序,例如您案例中的长度,则必须实现您自己的 Comparator

    Comparator<String> x = new Comparator<String>()
{
@Override
public int compare(String o1, String o2)
{
if(o1.length() > o2.length())
return -1;

if(o2.length() > o1.length())
return 1;

return 0;
}
};

Collections.sort(mylist, x);

关于java - 如何根据字符串的长度对 List<String> 进行排序并打印前 N 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17378249/

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