在JAVA中将字符串分解为Long或Long of List of Long循环

Lal*_*iya 3 java

我想将String数组分解为Long数组或List.我不想使用Loop.

有没有Java方法可以做到这一点.

And*_*s_D 8

没有O(1)操作将a String[](用数字字符串)"转换" 为a long[].如果循环可见或隐藏在某些第三方方法中,它将始终为O(n).

如果您不想"看到"循环,只需实现一个方法

Long[] pseudoOneStepConversion(numbers);
Run Code Online (Sandbox Code Playgroud)

并实施

privat Long[] pseudoOneStepConversion(String[] numbers) {
  Long[] result = new long[numbers.length];
  for (int i = 0; i < numbers.length; i++)
     result[i] = Long.parseLong(numbers[i]);
  return result;
}
Run Code Online (Sandbox Code Playgroud)

我们也可以递归地执行它 - 它仍然是O(n),性能较差并且看起来不像循环:

public static void main(String[] args) {
    List<Long> target = new ArrayList<Long>();
    copy(new String[]{"1", "2", "3"}, target, 0);
    System.out.println(target);
}

private static void copy(String[] source, List<Long> target, int index) {
    if (index == source.length)
        return;
    target.add(Long.parseLong(source[index]));
    copy(source, target, index+1);
}
Run Code Online (Sandbox Code Playgroud)

注意 - 因为我开始得到递归示例的downvotes:它纯粹是学术性的,并不打算用于生产代码 - 思想,这很明显;)


vkl*_*idu 6

用Guava库简化的Eugene答案。从Guava 16.0起。

List<Long> longList = Lists.transform(Arrays.asList(stringArray), Longs.stringConverter());
Run Code Online (Sandbox Code Playgroud)

更新:使用Java 8的解决方案,没有第3方库:

List<Long> longList = Stream.of(stringArray).map(Long::valueOf).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)