我正在查看文档IntStream,我看到了一种toArray方法,但没有办法直接进入List<Integer>
当然有一种方法可以将a转换Stream为List?
我有一个基元数组,例如int,int [] foo.它可能是一个小型的,或不是.
int foo[] = {1,2,3,4,5,6,7,8,9,0};
Run Code Online (Sandbox Code Playgroud)
从中创建一个最好的方法是Iterable<Integer>什么?
Iterable<Integer> fooBar = convert(foo);
Run Code Online (Sandbox Code Playgroud)
笔记:
请不要回答使用循环(除非你可以很好地解释编译器如何对它们做一些聪明的事情?)
另请注意
int a[] = {1,2,3};
List<Integer> l = Arrays.asList(a);
Run Code Online (Sandbox Code Playgroud)
甚至不会编译
Type mismatch: cannot convert from List<int[]> to List<Integer>
Run Code Online (Sandbox Code Playgroud)
还要检查 为什么数组不能分配给Iterable? 在回答之前.
此外,如果你使用一些库(例如,番石榴),请解释为什么这是最好的.(因为它来自谷歌不是一个完整的答案:P)
最后,由于似乎有关于此的功课,避免发布家庭作业代码.
我有一个float [],我想得到一个具有相同元素的列表.我可以做一个又一个添加它们的丑陋的事情,但我想使用Arrays.asList方法.但是有一个问题.这有效:
List<Integer> list = Arrays.asList(1,2,3,4,5);
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.
int[] ints = new int[] {1,2,3,4,5};
List<Integer> list = Arrays.asList(ints);
Run Code Online (Sandbox Code Playgroud)
asList方法接受一个varargs参数,对我来说,扩展是一个数组的"简写".
问题:
为什么第二段代码返回List<int[]>但不返回List<int>.
有没有办法纠正它?
为什么自动装箱不在这里工作; 即int[]到Integer[]?
int[] sorted = {10,67,68,28};
int[] sortedOriginal = sorted.clone();
Arrays.sort(sorted);
System.out.println(Arrays.asList(sorted).indexOf(sortedOriginal[0]));
Run Code Online (Sandbox Code Playgroud)
在这个非常简单的代码中,我创建了一个int数组,克隆它,并对原始数据进行排序.之后我尝试找到给定某个值的索引并返回-1.
这没有意义.有谁知道为什么会这样,修复是什么?
我目前正在尝试解决Euler项目的问题38,虽然我显然试图自己解决所有问题但我似乎遇到了一堵砖墙,我想我需要你的帮助.
所以这是我的代码:
import java.util.Arrays;
public class PandigitalMultiples{
public static void main(String[]args){
long c = 0;
long pdLong = 0;
for(int i = 1; i < 10000; i ++){
String pdString = "";
for(int n = 1; pdString.length() <= 9; n++){
long p = n * i;
String pString = String.valueOf(p);
pdString = pdString + pString;
pdLong = Long.parseLong(pdString);
if(is1To9Pandigital(pdString) && pdLong > c && pdLong < 1000000000 && n > 1){
c = pdLong;
}
}
}
System.out.println(c); …Run Code Online (Sandbox Code Playgroud) Stream.of(int[])返回Stream<int[]>,而Stream.of(String[])
返回Stream<String>。
为什么两种方法的行为有所不同?双方应该要么返回
Stream<int>和Stream<String>或Stream<int[]>和Stream<String[]>。
static int intArr[] = { 1, 2, 3, 4, 5 };
static String stringArr[] = { "3", "6", "8","14", "15" };
Stream<int[]> stream = Stream.of(intArr);
Stream<String> stream1 = Stream.of(stringArr);
Run Code Online (Sandbox Code Playgroud)