在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()