在ArrayList中查找最大的字符串

//我试图在我的ArrayList中找到最大的String并将其打印出来,并包含最大元素所在的索引并将其打印到屏幕上。 我只是想知道我哪里出错了。

谢谢。

import java.util.Scanner; import java.util.ArrayList; public class ArraylistString { public static void main(String [] args) { // Instance of Scanner class Scanner keyboardIn = new Scanner(System.in); // Declare an array list of Strings ArrayList Str = new ArrayList(); // Add names to ArrayList Str.add("Jim Bob"); Str.add("Bobby Jones"); Str.add("Rob Stiles"); int largestString = Str.size(); int index = 0; // Use for loop to print out elements from ArrayList for(int i = 0; i  largestString) { largestString = Str[i].size(); index = i; } } // Output largest String and index it was found at System.out.println("Index " + index + " "+ Str[index] + " " + "is the largest and is size " + largestString); } } 

请尝试这些代码。 在这里,我尝试使用get()来访问正常工作的ArrayList元素。

 import java.util.Scanner; import java.util.ArrayList; class ArraylistString { public static void main(String args[]) { ArrayList Str = new ArrayList(); Str.add("Jim Bob"); Str.add("Bobby Jones"); Str.add("Rob Stiles"); int largestString = Str.get(0).length(); int index = 0; for(int i = 0; i < Str.size(); i++) { if(Str.get(i).length() > largestString) { largestString = Str.get(i).length(); index = i; } } System.out.println("Index " + index + " "+ Str.get(index) + " " + "is the largest and is size " + largestString); } } 

您还可以使用java.util.Collections.max

Java 8

 String max = Collections.max(Str, Comparator.comparing(s -> s.length())); 

以前的Java 8

 String max = Collections.max(Str, new Comparator() { @Override public int compare(String o1, String o2) { return o1.length() - o2.length(); } }); 

然后

  System.out.println("Index " + arr.indexOf(max) + " " + max + " " + "is the largest and is size " + max.length()); 

你有正确的想法,但语法错误。 在Java中,只有数组支持[]语法。 ArrayList不是数组,它是实现List接口的类,您应该使用get方法来访问其成员。 类似地, String没有size()方法,它有一个length()方法。

我会将您的largestString变量设置为您添加的第一个String

 int largestString = Str.get(0).length(); 

然后你应该使用以下内容来检查最大的String

 if(Str.get(i).length() > largestString) { largestString = Str.get(i).length(); index = i; } 

您不能像尝试那样使用[]索引到ArrayList

我还建议更好的变量名称。 如果我看到Str作为一个变量,我会认为它是一个String 。 也许尝试strList或类似的东西。

这是另一个例子:

 ArrayList list = new ArrayList<>(); list.add("Jim Bob"); list.add("Bobby Jones"); list.add("Rob Stiles"); Optional largest = list.stream() .max(Comparator.comparing(String::length)); System.out.println("largest: " + largest.get()); 

你得到什么作为输出?

也行

 int largestString = Str.size()