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

Самая длинная строка в массиве (дублирование)

Я написал программу, которая находит самую длинную строку в массиве. Теперь мне нужен дополнительный функционал. Это включает в себя только дублирование строки в выводе, если количество максимальных букв n-строки равно m-строке

Поскольку обе они (11 букв) являются самыми длинными строками (не только первая из них, но обе!). Заранее спасибо!

 public static void main(String[] args) throws Exception < ArrayListlist = new ArrayList(); ArrayList numList = new ArrayList(); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); for(int i=0; i int maxN = numList.get(0); String maxS = list.get(0); for(int i=0; imaxN) < maxN=numList.get(i); maxS = list.get(i); >> System.out.println(maxS); > 

2 ответа

Вы можете добавить другой список, который будет содержать ваши результаты и перебирать записи.

ArrayList result = new ArrayList<>(); for(int i=0;i > 

Если вы собираетесь сравнивать длины строк элементов массива друг с другом, строго придерживайтесь тех длин, с которыми вы столкнетесь при переборе исходного списка ArrayList. Не то чтобы вы не могли, но нет реальной необходимости создавать еще один целочисленный ArrayList для хранения длины строк элементов всего, что содержится в исходном списке ArrayList, поскольку вы можете установить это с помощью своей первоначальной итерации. Все зависит от того, какие условия вы устанавливаете во время выполнения итерации.

Как уже указывал @Efka, у вас может быть еще один String ArrayList для хранения фактических элементарных строк, которые имеют самую длинную (и одинаковую) длину, и затем отображают эти результаты.

Естественно предполагается, что вы успешно заполнили список ArrayList строковыми элементами, поэтому:

ArrayList dupList = new ArrayList<>(); // Will hold the results // Need to start somewhere so. // Initialize maxN with the string length of the first // element contained within the 'list' ArrayList. int maxN = list.get(0).length(); // Add the first element to the duplicate list. dupList.add(list.get(0)); // We start our iteration from 1 instead of 0 // because we've already processed index 0 // above to establish a starting point. for(int i = 1; i < list.size(); i++) < int length = list.get(i).length(); //get the element length if(length >= maxN) < if (length >maxN) < // Clear the duplicate list since there is // now an elemental string that is longer. dupList.clear(); // Set maxN to the new longest length maxN = list.get(i).length(); >// Add the new longest or equal to the longest // element encountered to the duplicate list. dupList.add(list.get(i)); > > 

Для отображения определенных результатов вы можете использовать что-то вроде этого:

// Display the determined results. for (int i = 0; i

Источник

Читайте также:  Нужно ли знать php

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

Спасибо, Ваши сообщения помогли. Вот только непонятно, вроде программа работает правильно, но проверку на сайте все равно не проходит.

Возник кстати вопрос, add — это добавить в определенное место в ArrayList, а что такое тогда ArrayList.set(i,s)?

package com.* import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; /* Самая длинная строка 1. Создай список строк. 2. Считай с клавиатуры 5 строк и добавь в список. 3. Используя цикл, найди самую длинную строку в списке. 4. Выведи найденную строку на экран. 5. Если таких строк несколько, выведи каждую с новой строки. */ public class Solution < public static void main(String[] args) throws Exception < //напишите тут ваш код BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); ArrayListlist1 = new ArrayList(); // заполняемый пользователем массив ArrayList list2 = new ArrayList(); // массив с самыми длинными строками for (int i = 0; i < 5; i++) // заполняем 1 массив < String s = reader.readLine(); list1.add(i, s); >int n = 0; String max = list1.get(0); // устанавливаем самую длинную строку = 1 строке for (int i = 0; i < list1.size(); i++) < String a = list1.get(i); if (max.length() < a.length()) // если появляется новая самая длинная строка < for (int j = 0; j < i; j++) < list2.remove(j); // удаляем предыдущие значения строк >max = a;/* list2.set(n,a);*/ list2.add(0, a); // добавляем в начало. n=1; // количество строк которое будем выводить > if (max.length() == a.length()) // если находим ещё одну строку с таким же количеством символов как у самой длинной < max = a;/* list2.set(n,a);*/ list2.add(0, a); n = n + 1; // увеличиваем количество строк для вывода на 1. >> for (int i = 0; i < n; i++) // вывод < System.out.println(list2.get(i)); >> >

Вот например есть неплохая ссылка по ArrayList
http://developer.alexanderklimov.ru/. /arraylist.php
А по поводу того, что мой код не проходит проверку. Даже не знаю. Как вариант не реализован ввод слов с клавиатуры для заполнения списка.

«Keep it simple» — придерживайтесь простоты!
Уильям Оккам — «Не следует множить сущее без необходимости»
Сложность — враг простоты и удобства!

Источник

Как найти самую длинную строку в List?

Подскажите, пожалуйста, способ нахождения самой длинной строки в ArrayList.

Ответы (2 шт):

Собссн банальный цикл и сравнение значения с предыдущем вполне спасёт:

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

Вариант с Java8 (использовать java.util.Collections.max )

String max = Collections.max(StrList, Comparator.comparing(s -> s.length())); 

Еще вариант с Collections, но до Java8

String max = Collections.max(Str, new Comparator() < @Override public int compare(String o1, String o2) < return o1.length() - o2.length(); >>); System.out.println(max); 

Collections.max — принимает на вход коллекцию (в данном случае строк) и компаратор, в котором должна быть описана логика сравнения элементов коллекции.

ArrayList strings = new ArrayList(); BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); for (int i = 0; i < 5; i++); < strings.add(r.readLine()); >int m = strings.get(0).length(); for (String s : strings) if (s.length() > m) m = s.length(); for (String s : strings) if (s.length() == m) System.out.println(s); 

Источник

P0huber / LongestString.java

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

package com . javarush . task . task07 . task0708 ;
import java . io .*;
import java . util . ArrayList ;
/*
Самая длинная строка
*/
public class LongestString
public static void main ( String [] args ) throws Exception
ArrayList < String >al = new ArrayList <>();
BufferedReader r = new BufferedReader ( new InputStreamReader ( System . in ));
for ( int i = 0 ; i < 5 ; i ++)
al . add ( r . readLine ()); //creating the list
int longest = al . get ( i ). length ();>>
for ( int j = 0 ; j < 5 ; j ++) < //сразу вывод
if ( al . get ( j ). length () == longest )
System . out . println ( al . get ( j ));
>
>
>
/*Самая длинная строка
1. Создай список строк.
2. Считай с клавиатуры 5 строк и добавь в список.
3. Используя цикл, найди самую длинную строку в списке.
4. Выведи найденную строку на экран.
5. Если таких строк несколько, выведи каждую с новой строки.
Требования:
1. Объяви переменную типа ArrayList (список строк) и сразу проинициализируй ee.
2. Программа должна считывать 5 строк с клавиатуры и записывать их в список.
3. Программа должна выводить самую длинную строку на экран.
4. Если есть несколько строк с длиной равной максимальной, то нужно вывести каждую из них с новой строки.*/

Источник

Оцените статью