在ArrayList中查找最大的字符串

时间:2015-09-15 19:12:00

标签: java 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<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);  

   }

}

7 个答案:

答案 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)

你得到什么作为输出?

也行,

&#13;
&#13;
int largestString = Str.size()
&#13;
&#13;
&#13;

将maximumString设置为数组Str中的元素数,这样可能会导致错误。我将它设置为0或甚至-1作为基线,或者可能是Str [0] .size(),以便您可以以第一个元素作为基线来启动for循环。

编辑:

我甚至没有意识到Java就像人们所说的一样,你不能像大多数语言一样使用[]运算符而你应该使用string.length()而不是str.size()< / p>