查找 ArrayList 中的最大字符串

新手上路,请多包涵

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

谢谢。

 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);

   }

}

原文由 user4536519 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 467
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);

    }

}

原文由 ABHISHEK RANA 发布,翻译遵循 CC BY-SA 3.0 许可协议

您还可以使用 java.util.Collections.maxStream 版本:

Java 8

 String max = Collections.max(strings, Comparator.comparing(String::length)); // or s -> s.length()

或者

String max = strings.stream().max(comparing(String::length)).get();

之前的 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());

原文由 Johnny Willer 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题