這個問題在這里已經有了答案: 如何在 Java 中用全零初始化 ArrayList? (5 個回答) 創建具有重復元素的串列 (5 個回答) 創建一個具有相同值/物件的 n 個副本的陣列? (7 個回答) 3 小時前關閉。
有沒有辦法用 X 個相同的物件快速初始化一個新的 ArrayList 物件?
這是一個示例代碼:
private List<String> initStringArrayList(int size, String s) {
List<String> list = new ArrayList<>(size);
while (size-- > 0) {
list.add(s);
}
return list;
}
我想要相同的結果,但對于大“大小”值要快得多。
當然,我可以使用以下代碼:
private List<String> initStringArrayList(int size, String s) {
String[] array = new String[size];
Arrays.fill(array, s);
return new ArrayList<>(Arrays.asList(array));
}
但是 ArrayList<>() 的建構式會復制完整的陣列而不是在內部使用它。那是不能接受的。
還有另一種方法嗎?我需要一個 ArrayList 作為結果,而不僅僅是一個串列。它應該是任何型別,而不僅僅是字串。
感謝您的任何答復!
uj5u.com熱心網友回復:
使用Collections.nCopies, 并將其復制到 ArrayList 中:
private <T> List<T> initStringArrayList(int size, T s) {
return new ArrayList<>(Collections.nCopies(size, s));
}
這假設您List最終確實想要一個可變的。如果您可以使用帶有專案size時間的不可變串列,那么Collections.nCopies(size, s)它本身就可以作業:它具有記憶體效率,分配速度快等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/345313.html
下一篇:Thymeleaf中未識別的屬性
