Самая длинная строка в List

UlanZhusupov

Задача:

<ol> <li>Создай список строк.</li> <li>Считай с клавиатуры 5 строк и добавь в список.</li> <li>Используя цикл, найди самую длинную строку в списке.</li> <li>Выведи найденную строку на экран.</li> <li>Если таких строк несколько, выведи каждую с новой строки.</li> </ol>

Как правильно вывести только самую длинную строку из списка и те - которые будут равны ее длине?

package com.javarush.test.level07.lesson06.task02;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Solution
{

   public static void main(String[] args) throws Exception 
   {

    ArrayList<string> list = new ArrayList<>();
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

    for (int i = 0; i < 5; i++){
        String s = reader.readLine();
        list.add(s);
    }

    int max = list.get(0).length();

    for (int i = 0; i < list.size(); i++){

        if (list.get(i).length() > max){

            max = list.get(i).length();
            System.out.println(list.get(i));

        }else if (list.get(i).length() == max){

            max = list.get(i).length();
            System.out.println(list.get(i));

        }
    }
  }
}
</string>
2 ответа

UlanZhusupov

У меня получилось такое решение:

List<string> strings = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

for (int i = 0; i < 5; i++) 
       strings.add(reader.readLine());

Collections.sort(strings, (s1, s2) -> s2.length() - s1.length());
int length = strings.get(0).length();
for (String string : strings)
     if (length == string.length())
         System.out.println(string);
     else
         break;
</string>


UlanZhusupov

что--то вроде такого:

public static void main(String[] args) throws Exception 
{
    //Fill list
    ArrayList<string> list = new ArrayList<>();
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

    for (int i = 0; i < 5; i++){
        String s = reader.readLine();
        list.add(s);
    }

    //Find largest string(s)
    String max = Collections.max(list , Comparator.comparing(s -> s.length()));

    ArrayList<string> maxLengthStrs = new ArrayList<string>;

    foreach (var str in list)
    {
       if(str.length == max)
       {
          maxLengthStrs.Add(str);
          System.out.println(str);
       }
    }

    //maxLengthStrs -- строка(и) с наибольшей длинной
}
</string></string></string>

licensed under cc by-sa 3.0 with attribution.