//我试图在我的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<String> 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 < Str.size(); i++)
{ // Test which String is the largest
if(Str[i].size() > 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);
}
}
答案 0 :(得分:18)
您也可以使用java.util.Collections.max
。
Java 8
String max = Collections.max(Str, Comparator.comparing(String::length)); // or s -> s.length()
之前的Java 8
String max = Collections.max(Str, new Comparator<String>() {
@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());
答案 1 :(得分:2)
请尝试这些代码。在这里,我尝试使用get()来访问正常工作的ArrayList元素。
import java.util.Scanner;
import java.util.ArrayList;
class ArraylistString
{
public static void main(String args[])
{
ArrayList<String> Str = new ArrayList<String>();
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);
}
}
答案 2 :(得分:0)
你有正确的想法,但语法错误。在Java中,只有数组支持[]
语法。 ArrayList
不是数组,它是实现List
接口的类,您应该使用get
方法来访问其成员。同样,String
没有size()
方法,它有length()
方法。
答案 3 :(得分:0)
我会将您的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
。也许尝试chrome.storage.local.set({"sidemargins":v});
或类似的东西。
答案 4 :(得分:0)
这里是另一个示例:
ArrayList<String> list = new ArrayList<>();
list.add("Jim Bob");
list.add("Bobby Jones");
list.add("Rob Stiles");
Optional<String> largest = list.stream()
.max(Comparator.comparing(String::length));
System.out.println("largest: " + largest.get());
答案 5 :(得分:0)
从Java-8开始:
List<Integer> numList = Arrays.stream(Str).map(String::length).collect(Collectors.toList());
Integer m = numList.stream().mapToInt(i->i).max().orElse(4000); //get strings with their length
int k = numList.indexOf(m); //index of String with Maximum Length
System.out.println(Str.get(k)); //get your longest string
答案 6 :(得分:-1)
你得到什么作为输出?
也行,
int largestString = Str.size()
&#13;
将maximumString设置为数组Str中的元素数,这样可能会导致错误。我将它设置为0或甚至-1作为基线,或者可能是Str [0] .size(),以便您可以以第一个元素作为基线来启动for循环。
编辑:
我甚至没有意识到Java就像人们所说的一样,你不能像大多数语言一样使用[]运算符而你应该使用string.length()而不是str.size()< / p>