我正在使用 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
}
}
答案 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数组时,也可以构建长度数组。