此代碼無法編譯:
int[] values = new int[3];
values[0] = 3;
values[1] = 4;
values[2] = 2;
List<int> cu = Collections.unmodifiableList(Arrays.asList(values));
錯誤在List<int>,它說:
Syntax error, insert "Dimensions" to complete ReferenceTypeJava(1610612976)
如果我更改為,List<Integer>則錯誤在Collections.unmodifiableList(Arrays.asList(values)),說:
Type mismatch: cannot convert from List<int[]> to List<Integer>Java(16777233)
我該如何解決這個問題?
uj5u.com熱心網友回復:
通話沒有按照Arrays.asList您的想法進行。在您的代碼中,您不是在創建一個整數串列,而是一個 List<int[]>,其中每個元素都是一個 int 陣列,正如編譯器所說。
要解決您的問題,您首先需要在 a 中復制陣列的元素,List然后UnmodifiableList從中創建一個。
此外,泛型只允許參考型別作為型別引數的實參。int是原始型別,所以你不能寫List<int>,而是List<Integer>.
這是解決您的問題的可能實作:
int[] values = new int[3];
values[0] = 3;
values[1] = 4;
values[2] = 2;
List<Integer> cu = Collections.unmodifiableList(Arrays.stream(values).mapToObj(i -> i).collect(Collectors.toList()));
uj5u.com熱心網友回復:
就像下面這樣裝箱。
int[] values = new int[3];
values[0] = 3;
values[1] = 4;
values[2] = 2;
List<int> cu = Collections.unmodifiableList(Arrays.stream(ints).boxed().collect(Collectors.toList()));
uj5u.com熱心網友回復:
如果您使用的是 Java16 ,我建議您使用toList():
List<Integer> cu = IntStream.of(values).boxed().toList();
其他來自 Java10 的您可以使用IntStreamand Collectors.toUnmodifiableList:
List<Integer> cu = IntStream.of(values)
.boxed()
.collect(Collectors.toUnmodifiableList());
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/495788.html
上一篇:根據另一個串列回傳連續出現的串列
