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.