前言
說起陣列轉換成 ArrayList,很多同學第一反應就是遍歷陣列,將元素逐個添加到 ArrayList 中,但是這個看著就lower,一般不會這么答,
所以馬上就會想到Arrays工具類的 asList 方法,如果你這么答,那么恭喜你,答錯入坑,
為什么不能用 Arrays 的 asList 方法將 int[] 裝換成 ArrayList
如果此處陣列 int[] 換作是 Integer[] 或者任何一個參考型別元素的陣列都正確,Arrays 的 asList 方法只能轉換參考型別元素的陣列,
asList 方法的原始碼就是這么定義的:
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable
{
注意:Arrays.asList(T... a)回傳的List中元素是不可變的,
從原始碼可以看出Arrays.asList(T... a)回傳的是一個ArrayList,但是這個ArrayList是Arrays的內部類,不是我們集合框架下的那個ArrayList,
使用stream進行轉換(jdk8 推薦)
jdk版本低于1.8不可以使用,
陣列通過 Arrays 工具類的 stream() 方法進行流化,獲取 Stream 物件,boxed()方法是用來裝箱的,
int[] arys = {1,2,3};
List<Integer> list = Arrays.stream(arys).boxed().collect(Collectors.toList());
要轉化為ArrayList還需要進行一次強制型別轉化
遍歷陣列,逐個加入元素到List中
可以使用for、增強for回圈、迭代器,
使用for回圈遍歷陣列,性能稍微好那么一丟丟,增強for的本質就是迭代器,寫法更加簡潔,
這里代碼就做展示了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/539511.html
標籤:其他
上一篇:<八>lambda表達是應用實踐
下一篇:爬蟲
