第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

Java不可變ArrayList

標(biāo)簽:
Java

集合类在Java中是引用类型,在操作的时候可能不经意间被程序修改,一些初级开发经常会犯类似的错误。这里我们讨论下如何让ArrayList不可改变。本文将演示以下几种方式:

  • JDK
  • Guava
  • Apache Commons Collection4

JDK

JDK给我们提供了一个很简便的方式从集合中获取一个不可变集合

Collections.unmodifiableList(List<? extends T> list)

我们可以简单的看一下其实现方式:

	public static <T> List<T> unmodifiableList(List<? extends T> list) {
        return (list instanceof RandomAccess ?
                new UnmodifiableRandomAccessList<>(list) :
                new UnmodifiableList<>(list));
    }


image.png

我们可以看到UnmodifiableList内对集合的操作都会抛出异常,所以返回的集合,列表对象是不可变的。

Guava

guava提供了一个创建不可变列表的对象ImmutableList

ImmutableList.copyOf(list);

我们看个案例

public class App {
    public static void main(String[] args) {
        List<Integer> givenList = Arrays.asList(1, 2, 3, 4, 5, 6);
        List<Integer> immutableList = ImmutableList.copyOf(givenList);
        immutableList.add(10);
    }
}
// 会抛出异常
Exception in thread "main" java.lang.UnsupportedOperationException
	at com.google.common.collect.ImmutableCollection.add(ImmutableCollection.java:225)
	at me.aihe.App.main(App.java:19)

Commons Collection

Apache Commons给我们提供了很多工具类,Collection也是其中的一个工具库,也提供了一个简单的API来创建不可变列表。

ListUtils.unmodifiableList(list);

然后演示一个简单的案例,会抛出UnsupportedOperationException。

public class App {
    public static void main(String[] args) {
        List<Integer> givenList = Arrays.asList(1, 2, 3, 4, 5, 6);
        List<Integer> integers = ListUtils.unmodifiableList(givenList);
        integers.add(10);
    }
}
//结果抛出异常
Exception in thread "main" java.lang.UnsupportedOperationException
	at org.apache.commons.collections4.list.UnmodifiableList.add(UnmodifiableList.java:83)
	at me.aihe.App.main(App.java:19)

小结

//JDK
Collections.unmodifiableList(List<? extends T> list)
//Guava
ImmutableList.copyOf(list);
//Commons Collection4
ListUtils.unmodifiableList(list);

最后

主要说了几种创建不可变列表的方法,做了简单的演示,开发中有时会碰到的场景之一。

希望有帮助

参考

點擊查看更多內(nèi)容
3人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
JAVA開發(fā)工程師
手記
粉絲
1.1萬
獲贊與收藏
1545

關(guān)注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消