如何在java中将String数组转换为length数组

时间:2016-03-09 05:11:10

标签: java

我正在使用 Java 1.7 ,我需要将String数组转换为int数组,其中包含String数组中每个元素的长度。

提醒:我需要多次传递长度数组作为方法的参数,并且由于某些机密问题,我有兴趣传递String数组。这就是为什么我需要将长度存储为int数组。

例如,我有一个String数组的东西为

String[] names = {"Jack", "Bob", "Alice"};

我需要将其转换为元素长度的int数组

int[] lengths = {4, 3, 5}; 

到目前为止,我尝试了以下但是有没有内置方法或更好的解决方案?

public class ArrayLengthTest{    
     public static void main(String []args){
        String[] names = {"Jack", "Bob", "Alice"};
        int[] lengths = new int[names.length];
        for (int i = 0; i < names.length; i++) {
            lengths[i] = names[i].length();
        }
        System.out.println(java.util.Arrays.toString(lengths));// print [4, 3, 5] 
        method1(lengths);// passing length array
        method2(lengths);// passing length array
        method3(lengths);// passing length array
     }
}

3 个答案:

答案 0 :(得分:6)

JDK 版本为 1.8 或更高版本时尝试此操作

int[] lengths = Stream.of(names).mapToInt(String::length).toArray();

答案 1 :(得分:1)

这通常不是必需的,因此没有这样的内置方法来创建包含每个字符串值的长度的新数组。

你提到的逻辑是正确的。如果需要,你可以改进逻辑。

如果您需要使用有时(不重复)的长度,您可以直接访问数组元素的长度。使用names [i] .length();在迭代中。

如果你使用的是JDK 1.8,那么saka的回答会有所帮助。

int[] lengths = Stream.of(names).mapToInt(String::length).toArray();

但正如您所说,您使用的是java 1.7,您只能选择迭代并手动创建数组。

public class ArrayLengthTest{    
 public static void main(String []args){
    String[] names = {"Jack", "Bob", "Alice"};
    int[] lengths = new int[names.length];
    for (int i = 0; i < names.length; i++) {
        lengths[i] = names[i].length();
    }
    System.out.println(java.util.Arrays.toString(lengths));// print [4, 3, 5] 
    method1(lengths);// passing length array
    method2(lengths);// passing length array
    method3(lengths);// passing length array
 }
}

答案 2 :(得分:0)

如果你像上面那样手动声明你的字符串数组,那么没有其他高效方式,你使用的任何内置方法将具有相同的复杂性。但是,如果要动态构建String数组,那么在将每个String分配给String数组时,也可以构建长度数组。