如何计算数组列表的长度

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 以获得更好的性能。