Close

How to find the longest and the shortest String in Java?

[Last Updated: Apr 22, 2020]

Java String Manipulation Java Collections Java 

This tutorial shows different ways of finding longest and shortest string in Java.

Using a loop

package com.logicbig.example;

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

public class ShortestLongestStrings {
    public static void main(String[] args) {
        List<String> fruits = Arrays.asList("apple", "banana", "pie", "pineapple", "apricots");
        String longestFruitName = "";
        for (String fruit : fruits) {
            if (fruit.length() > longestFruitName.length()) {
                longestFruitName = fruit;
            }
        }

        String shortestFruitName = longestFruitName;
        for (String fruit : fruits) {
            if (fruit.length() < shortestFruitName.length()) {
                shortestFruitName = fruit;
            }
        }

        System.out.println("Longest Fruit name: " + longestFruitName);
        System.out.println("Shortest Fruit name: " + shortestFruitName);
    }
}
Longest Fruit name: pineapple
Shortest Fruit name: pie

Via Sorting by Length

package com.logicbig.example;

import java.util.*;

public class ShortestLongestStrings2 {
    public static void main(String[] args) {
        List<String> fruits = Arrays.asList("apple", "banana", "pie", "pineapple", "apricots");
        List<String> sortedList = new ArrayList<>(fruits);
        Collections.sort(sortedList, Comparator.comparingInt(String::length));

        System.out.println("Longest Fruit name: " + sortedList.get(sortedList.size() - 1));
        System.out.println("Shortest Fruit name: " + sortedList.get(0));
    }
}
Longest Fruit name: pineapple
Shortest Fruit name: pie

By using Java 8 Streams

package com.logicbig.example;

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

public class ShortestLongestStrings3 {
    public static void main(String[] args) {
        List<String> fruits = Arrays.asList("apple", "banana", "pie", "pineapple", "apricots");

        String shortestFruitName = fruits.stream()
                                         .sorted(Comparator.comparingInt(String::length))
                                         .findFirst()
                                         .orElse(null);

        String longestFruitName = fruits.stream()
                                        .sorted(Comparator.comparingInt(String::length))
                                        .reduce((first, second) -> second)
                                        .orElse(null);

        System.out.println("Longest Fruit name: " + longestFruitName);
        System.out.println("Shortest Fruit name: " + shortestFruitName);
    }
}
Longest Fruit name: pineapple
Shortest Fruit name: pie

See Also