Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中如何将字符串数组转换为长度数组_Java - Fatal编程技术网

java中如何将字符串数组转换为长度数组

java中如何将字符串数组转换为长度数组,java,Java,我使用的是Java1.7,我需要将字符串数组转换为int数组,该数组包含字符串数组中每个元素的长度 提醒:我需要多次传递长度数组作为方法的参数,由于一些机密问题,我对传递字符串数组不感兴趣。这就是为什么我需要将长度存储为int数组 例如,我有一个字符串数组 String[] names = {"Jack", "Bob", "Alice"}; 我需要将它转换为元素长度的int数组 int[] lengths = {4, 3, 5}; 到目前为止,我尝试了以下方法,但是否有任何内置方法或更好的

我使用的是Java1.7,我需要将字符串数组转换为int数组,该数组包含字符串数组中每个元素的长度

提醒:我需要多次传递长度数组作为方法的参数,由于一些机密问题,我对传递字符串数组不感兴趣。这就是为什么我需要将长度存储为int数组

例如,我有一个字符串数组

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
     }
}
公共类数组长度测试{
公共静态void main(字符串[]args){
字符串[]名称={“杰克”、“鲍勃”、“爱丽丝”};
int[]长度=新的int[names.length];
for(int i=0;i
这通常不是必需的,所以没有内置的方法来创建包含每个字符串值长度的新数组

你提到的逻辑是正确的。您可以根据需要改进逻辑

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

如果您使用的是JDK1.8,那么saka的答案将有所帮助

int[] lengths = Stream.of(names).mapToInt(String::length).toArray();
但正如您所说的,您使用的是Java1.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
 }
}
公共类数组长度测试{
公共静态void main(字符串[]args){
字符串[]名称={“杰克”、“鲍勃”、“爱丽丝”};
int[]长度=新的int[names.length];
for(int i=0;i
当JDK版本为1.8或更高版本时,请尝试此操作

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

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

为什么不能在需要字符串长度时使用
名称[i].length()
?因为长度数组会被其他方法多次使用。请定义得更好,您可以将当前逻辑提取到方法中。您可以使用不同的循环,或者使用更有意义的变量名;实际上,您使用三行(完全合理的)代码来实例化和初始化
长度
数组。@ati如果用户希望在迭代后执行复杂的操作,则需要存储数组中存储的字符串元素的长度。所以我提供了答案。@mmuzahid即使它被多次使用,
names[I].length()
也可以正常工作<如果您担心的话,java中的code>String.length()
是O(1)操作。看这里,谢谢你的努力。但我使用的是Java1.7。所以它帮不了我。