Java – Find Longest String in an Arrays or List ?

In this article, we will discuss how to find longest String in an Arrays and List using Java

1. Finding Longest String in List or ArrayList :

We will find Longest String in a List or ArrayList in different ways

  • Using standard for-loop in Java
  • Using enhanced for-each loop in Java 5
  • Using Java 8 Stream and Collectors
  • Using Collections.sort() method
  • Using Arrays.sort() method

1.1 Using standard for-loop in Java

  • First, assume 1st element of the list as longest String
  • Iterate through remaining elements in the List starting with index 1 till end
    • Compare each iterating elements with assumed Longest element
    • If iterating element is the longest when comparing with assumed longest element then set/assign this element as Longest element
    • Likewise continue till the end of the loop and set/assign accordingly
  • Finally print Longest String and its length from the List

FindLongestStringInListUsingJava.java

package in.bench.resources.longest.string;

import java.util.Arrays;
import java.util.List;

public class FindLongestStringInListUsingJava {

	public static void main(String[] args) {

		// local variables
		String longestStr = null;
		int lengthofLongestStr = 0;
		int indexPosition = 0;


		// 1. names with different length
		List<String> names = Arrays.asList(
				"Bond",
				"Einstein",
				"Alice",
				"Whitman",
				"Bob",
				"Spider"
				);


		// 1.1 print to console=
		System.out.println("Original String List :- \n" + names);


		// 2. assume first element as Longest
		lengthofLongestStr = names.get(0).length();


		// 2.1 Iterate and find Longest name
		for(int index = 1; index < names.size(); index++) {

			if(names.get(index).length() > lengthofLongestStr) {
				lengthofLongestStr = names.get(index).length();
				indexPosition = index;
			}

		}


		// 2.2 get Longest String after above iteration
		longestStr = names.get(indexPosition);
		System.out.println("\nLongest String is " + longestStr + " at index-position " + indexPosition);


		// 2.3 find length of Longest name
		System.out.println("\nLength of Longest String is = " + lengthofLongestStr);
	}
}

Output:

Original String List :- 
[Bond, Einstein, Alice, Whitman, Bob, Spider]

Longest String is Einstein at index-position 1

Length of Longest String is = 8

1.2 Using enhanced for-each loop in Java 5

  • This illustration is very similar like previous 1.1 except that it uses enhanced for each loop introduced in Java 1.5 version
  • But code looks very elegant when comparing with previous example

FindLongestStringInListUsingJava5ForEachLoop.java

package in.bench.resources.longest.string;

import java.util.Arrays;
import java.util.List;

public class FindLongestStringInListUsingJava5ForEachLoop {

	public static void main(String[] args) {

		// local variables
		String longestStr = null;


		// 1. names with different length
		List<String> names = Arrays.asList(
				"Bond",
				"Einstein",
				"Alice",
				"Whitman",
				"Bob",
				"Spider"
				);


		// 1.1 print to console=
		System.out.println("Original String List :- \n" + names);


		// 2. iterate using Java 5 and find Longest String
		for(String name : names) {
			if(null == longestStr || name.length() > longestStr.length()) {
				longestStr = name;
			}
		}


		// 2.1 print Longest String after above iteration
		System.out.println("\nLongest String is = " + longestStr);


		// 2.2 find length of Longest name
		System.out.println("\nLength of Longest String is = " + longestStr.length());
	}
}

Output:

Original String List :- 
[Bond, Einstein, Alice, Whitman, Bob, Spider]

Longest String is = Einstein

Length of Longest String is = 8

1.3 Using Java 8 Stream and Collectors

1.4 Using Collections.sort() method

  • Collections.sort() method accepts 2 input-arguments where
    • 1st argument is the actual String list from which longest String has to be find
    • 2nd argument is the Comparator for sorting which here is according to String length
  • Get the last element using index-position which gives longest String after sorting
  • Finally print Longest String and its length from the List

FindLongestStringInListUsingCollectionSortingByLength.java

package in.bench.resources.longest.string;

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class FindLongestStringInListUsingCollectionSortingByLength {

	public static void main(String[] args) {

		// local variables
		String longestStr = null;


		// 1. names with different length
		List<String> names = Arrays.asList(
				"Bond",
				"Einstein",
				"Alice",
				"Whitman",
				"Bob",
				"Spider"
				);


		// 1.1 print to console=
		System.out.println("Original String List :- \n" + names);


		// 2. sort List according to String length
		Collections.sort(names, new Comparator<String>() {

			@Override
			public int compare(String str1, String str2) {
				return str1.length() - str2.length();
			}
		});


		// 2.1 get Longest String after above sorting
		longestStr = names.get(names.size() - 1);
		System.out.println("\nLongest String is = " + longestStr);


		// 2.2 find length of Longest name
		System.out.println("\nLength of Longest String is = " + longestStr.length());
	}
}

Output:

Original String List :- 
[Bond, Einstein, Alice, Whitman, Bob, Spider]

Longest String is = Einstein

Length of Longest String is = 8

1.5 Using Arrays.sort() method

  • Arrays.sort() method accepts 2 input-arguments where
    • 1st argument is the arrays from which longest String has to be find (convert actual String list to Arrays using list.toArray(new String[0]); method)
    • 2nd argument is the Comparator for sorting which here is according to String length
  • Get the last element using index-position which gives longest String after sorting
  • Finally print Longest String and its length from the List

FindLongestStringInListUsingArraysSortingByLength.java

package in.bench.resources.longest.string;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

public class FindLongestStringInListUsingArraysSortingByLength {

	public static void main(String[] args) {

		// local variables
		String longestStr = null;


		// 1. names with different length
		List<String> names = Arrays.asList(
				"Bond",
				"Einstein",
				"Alice",
				"Whitman",
				"Bob",
				"Spider"
				);


		// 1.1 print to console=
		System.out.println("Original String List :- \n" + names);


		// 2. convert List to Arrays
		String[] sortedArrays = names.toArray(new String[0]);


		// 2.1 sort converted Arrays according to String length
		Arrays.sort(sortedArrays, new Comparator<String>() {

			@Override
			public int compare(String str1, String str2) {
				return str1.length() - str2.length();
			}
		});


		// 2.2 get Longest String after above sorting
		longestStr = sortedArrays[sortedArrays.length - 1];
		System.out.println("\nLongest String is = " + longestStr);


		// 2.3 find length of Longest name
		System.out.println("\nLength of Longest String is = " + longestStr.length());
	}
}

Output:

Original String List :- 
[Bond, Einstein, Alice, Whitman, Bob, Spider]

Longest String is = Einstein

Length of Longest String is = 8

2. Finding Longest String in an Arrays :

We will find Longest String in an Arrays in different ways

  • Using standard for-loop in Java
  • Using enhanced for-each loop in Java 5
  • Using Java 8 Stream and Collectors
  • Using Arrays.sort() method
  • Using Collections.sort() method

2.1 Using standard for-loop in Java

  • First, assume 1st element of an Arrays as longest String
  • Iterate through remaining elements in an Arrays starting with index 1 till end
    • Compare each iterating elements with assumed Longest element
    • If iterating element is the longest when comparing with assumed longest element then set/assign this element as Longest element
    • Likewise continue till the end of the loop and set/assign accordingly
  • Finally print Longest String and its length from Arrays

FindLongestStringInAnArraysUsingJava.java

package in.bench.resources.longest.string;

import java.util.Arrays;

public class FindLongestStringInAnArraysUsingJava {

	public static void main(String[] args) {

		// local variables
		String longestStr = null;
		int lengthofLongestStr = 0;
		int indexPosition = 0;


		// 1. names with different length
		String[] names = new String[] {
				"Bond",
				"Einstein",
				"Alice",
				"Whitman",
				"Bob",
				"Spider"
		};


		// 1.1 print to console=
		System.out.println("Original String[] Arrays :- \n" 
				+ Arrays.toString(names));


		// 2. assume first element as Longest
		lengthofLongestStr = names[0].length();


		// 2.1 Iterate and find Longest name
		for(int index = 1; index < names.length; index++) {

			if(names[index].length() > lengthofLongestStr) {
				lengthofLongestStr = names[index].length();
				indexPosition = index;
			}
		}


		// 2.2 get Longest String after above iteration
		longestStr = names[indexPosition];
		System.out.println("\nLongest String is " + longestStr + " at index-position " + indexPosition);


		// 2.3 find length of Longest name
		System.out.println("\nLength of Longest String is = " + lengthofLongestStr);
	}
}

Output:

Original String[] Arrays :- 
[Bond, Einstein, Alice, Whitman, Bob, Spider]

Longest String is Einstein at index-position 1

Length of Longest String is = 8



2.2 Using enhanced for-each loop in Java 5

  • This illustration is very similar like previous 2.1 except that it uses enhanced for each loop introduced in Java 1.5 version
  • But code looks very elegant when comparing with previous example

FindLongestStringInAnArraysUsingJava5ForEach.java

package in.bench.resources.longest.string;

import java.util.Arrays;

public class FindLongestStringInAnArraysUsingJava5ForEach {

	public static void main(String[] args) {

		// local variables
		String longestStr = null;


		// 1. names with different length
		String[] names = new String[] {
				"Bond",
				"Einstein",
				"Alice",
				"Whitman",
				"Bob",
				"Spider"
		};


		// 1.1 print to console=
		System.out.println("Original String[] Arrays :- \n" 
				+ Arrays.toString(names));


		// 2. iterate using Java 5 and find Longest String
		for(String name : names) {
			if(null == longestStr || name.length() > longestStr.length()) {
				longestStr = name;
			}
		}


		// 2.1 print Longest String after above iteration
		System.out.println("\nLongest String is = " + longestStr);


		// 2.2 find length of Longest name
		System.out.println("\nLength of Longest String is = " + longestStr.length());
	}
}

Output:

Original String[] Arrays :- 
[Bond, Einstein, Alice, Whitman, Bob, Spider]

Longest String is = Einstein

Length of Longest String is = 8



2.3 Using Java 8 Stream and Collectors

  • With Java 1.8 version we can find Longest String using Stream methods like
    • Arrays.stream.max() method
    • Arrays.stream.reduce() method
    • Arrays.stream.collect() method
    • Arrays.stream.sorted() method
    • IntStream.summaryStatistics() method
    • Collections.max() method
  • Read Java 8 – Find Longest String in an Arrays or List or Stream ?



2.4 Using Arrays.sort() method

  • Arrays.sort() method accepts 2 input-arguments where
    • 1st argument is the arrays from which longest String has to be find
    • 2nd argument is the Comparator for sorting which here is according to String length
  • Get the last element using index-position which gives longest String after sorting
  • Finally print Longest String and its length from Arrays

FindLongestStringInAnArraysUsingArraysSortingByLength.java

package in.bench.resources.longest.string;

import java.util.Arrays;
import java.util.Comparator;

public class FindLongestStringInAnArraysUsingArraysSortingByLength {

	public static void main(String[] args) {

		// local variables
		String longestStr = null;


		// 1. names with different length
		String[] names = new String[] {
				"Bond",
				"Einstein",
				"Alice",
				"Whitman",
				"Bob",
				"Spider"
		};


		// 1.1 print to console=
		System.out.println("Original String[] Arrays :- \n" 
				+ Arrays.toString(names));



		// 2. sort converted Arrays according to String length
		Arrays.sort(names, new Comparator<String>() {

			@Override
			public int compare(String str1, String str2) {
				return str1.length() - str2.length();
			}
		});


		// 2.2 get Longest String after above sorting
		longestStr = names[names.length - 1];
		System.out.println("\nLongest String is = " + longestStr);


		// 2.3 find length of Longest name
		System.out.println("\nLength of Longest String is = " + longestStr.length());
	}
}

Output:

Original String[] Arrays :- 
[Bond, Einstein, Alice, Whitman, Bob, Spider]

Longest String is = Einstein

Length of Longest String is = 8



2.5 Using Collections.sort() method

  • Collections.sort() method accepts 2 input-arguments where
    • 1st argument is the list from which longest String has to be find (convert Arrays into List using Arrays.asList(); method)
    • 2nd argument is the Comparator for sorting which here is according to String length
  • Get the last element using index-position which gives longest String after sorting
  • Finally print Longest String and its length from Arrays

FindLongestStringInAnArraysUsingCollectionSortingByLength.java

package in.bench.resources.longest.string;

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class FindLongestStringInAnArraysUsingCollectionSortingByLength {

	public static void main(String[] args) {

		// local variables
		String longestStr = null;


		// 1. names with different length
		String[] names = new String[] {
				"Bond",
				"Einstein",
				"Alice",
				"Whitman",
				"Bob",
				"Spider"
		};


		// 1.1 print to console=
		System.out.println("Original String[] Arrays :- \n" 
				+ Arrays.toString(names));


		// 2. convert to List
		List<String> sortedNames = Arrays.asList(names);


		// 2.1 sort List according to String length
		Collections.sort(sortedNames, new Comparator<String>() {

			@Override
			public int compare(String str1, String str2) {
				return str1.length() - str2.length();
			}
		});


		// 2.2 get Longest String after above sorting
		longestStr = sortedNames.get(sortedNames.size() - 1);
		System.out.println("\nLongest String is = " + longestStr);


		// 2.3 find length of Longest name
		System.out.println("\nLength of Longest String is = " + longestStr.length());
	}
}

Output:

Original String[] Arrays :- 
[Bond, Einstein, Alice, Whitman, Bob, Spider]

Longest String is = Einstein

Length of Longest String is = 8

Related Articles:

Happy Coding !!
Happy Learning !!

Java – Find Shortest String in an Arrays or List ?
Java 8 – Find Shortest String in an Arrays or List or Stream ?