如何计算数组列表的长度
How to count lengths from an arraylist
我一直卡在这个作业上,我真的不知道如何理解它。我要做的是创建一个方法 'lengths' 获取字符串变量列表作为参数,然后 returns 一个包含字符串长度的数组列表。
输出应如下所示:
字符串的长度:[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);
}
}
您必须逐个字符串地查找它的长度,并将该长度放入新的 ArrayList 中。这可以使用 for-each 循环来完成,就像这样 -
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);
}
}
具有 Java 8 个流的另一个解决方案:
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);
}
并输出:
The lengths of the Strings: [4, 3, 10, 27]
对于 Java 8 及更高版本,您可以简单地使用 forEach
方法:
public static ArrayList<Integer> lengths(ArrayList<String> list) {
ArrayList<Integer> lengthList = new ArrayList<Integer>();
list.forEach(i -> lengthList.add(i.length()));
return lengthList;
}
如果使用 Java 7 或以下:
public static ArrayList<Integer> lengths(ArrayList<String> list) {
ArrayList<Integer> lengthList = new ArrayList<Integer>();
for(String str : list) {
lengthList.add(str.length());
}
return lengthList;
}
避免使用 Stream,因为一个简单的 forEach
就足以满足您的要求。应避免不必要地创建 Stream
以获得更好的性能。
我一直卡在这个作业上,我真的不知道如何理解它。我要做的是创建一个方法 'lengths' 获取字符串变量列表作为参数,然后 returns 一个包含字符串长度的数组列表。
输出应如下所示:
字符串的长度:[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);
}
}
您必须逐个字符串地查找它的长度,并将该长度放入新的 ArrayList 中。这可以使用 for-each 循环来完成,就像这样 -
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);
}
}
具有 Java 8 个流的另一个解决方案:
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);
}
并输出:
The lengths of the Strings: [4, 3, 10, 27]
对于 Java 8 及更高版本,您可以简单地使用 forEach
方法:
public static ArrayList<Integer> lengths(ArrayList<String> list) {
ArrayList<Integer> lengthList = new ArrayList<Integer>();
list.forEach(i -> lengthList.add(i.length()));
return lengthList;
}
如果使用 Java 7 或以下:
public static ArrayList<Integer> lengths(ArrayList<String> list) {
ArrayList<Integer> lengthList = new ArrayList<Integer>();
for(String str : list) {
lengthList.add(str.length());
}
return lengthList;
}
避免使用 Stream,因为一个简单的 forEach
就足以满足您的要求。应避免不必要地创建 Stream
以获得更好的性能。