Home > Blockchain >  How to count lengths from an arraylist
How to count lengths from an arraylist

Time:09-22

I have been stuck on this one assignment and I don't really know how to make sense of it. What I have to do is to create a method 'lengths' that gets a list of Strings variables as a Parameter which then returns an arraylist that contains the lengths of the Strings.

The output should look like as following:

The lengths of the Strings: [5, 3, 10, 27]

import java.util.ArrayList;

public class LengthsOfStrings {
   public static ArrayList<Integer> lengths(ArrayList<String> list) {
       ArrayList<Integer> lengthList = new ArrayList<Integer>();
       // write your code here
       return lengthList;
   }

   public static void main(String[] args) {
       ArrayList<String> list = new ArrayList<String>();
       list.add("Ciao");
       list.add("Moi");
       list.add("Benvenuto!");
       list.add("badger badger badger badger");
       ArrayList<Integer> lengths = lengths(list);
       
       System.out.println("The lengths of the Strings: "   lengths);
   }
}

CodePudding user response:

You'd have to go string by string, find out its length, and put that length into the new ArrayList. This could be done using a for-each loop, like so -

import java.util.ArrayList;

public class LengthsOfStrings {
   public static ArrayList<Integer> lengths(ArrayList<String> list) {
       ArrayList<Integer> lengthList = new ArrayList<Integer>();
       for (String str : list){
           lengthList.add(str.length());
       }
       return lengthList;
   }

   public static void main(String[] args) {
       ArrayList<String> list = new ArrayList<String>();
       list.add("Ciao");
       list.add("Moi");
       list.add("Benvenuto!");
       list.add("badger badger badger badger");
       ArrayList<Integer> lengths = lengths(list);
       
       System.out.println("The lengths of the Strings: "   lengths);
   }
}

CodePudding user response:

Another solution with Java 8 streams:

    public static List<Integer> lengths(ArrayList<String> list) {
       return list.stream().map(String::length).collect(Collectors.toList());
    }

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("Ciao");
        list.add("Moi");
        list.add("Benvenuto!");
        list.add("badger badger badger badger");
        List<Integer> lengths = lengths(list);

        System.out.println("The lengths of the Strings: "   lengths);
    }

And output:

The lengths of the Strings: [4, 3, 10, 27]

CodePudding user response:

For Java 8 and above, you can simply use forEach method for that:

public static ArrayList<Integer> lengths(ArrayList<String> list) {
    ArrayList<Integer> lengthList = new ArrayList<Integer>();
    list.forEach(i -> lengthList.add(i.length()));
    return lengthList;
}

If using Java 7 or below:

public static ArrayList<Integer> lengths(ArrayList<String> list) {
    ArrayList<Integer> lengthList = new ArrayList<Integer>();
    for(String str : list) {
      lengthList.add(str.length());
    }
    return lengthList;
  }

Avoid using Stream as a simple forEach will be enough for your requirement. Unnecessary creation of Stream should be avoided for better performance.

  • Related