謹用ArrayList中的subList方法

2021-10-02 08:41:19 字數 1281 閱讀 7467

parameters:

returns:

arraylist 的 sublist 結果不可強轉成 arraylist,否則會丟擲 classcastexception 異常:

public static void test7()
分析:

sublist 繼承 abstractlist ,所以具有list介面的所有方法。

sublist 是arraylist 的乙個內部類。sublist並沒有重新建立乙個list,而是直接引用原有的list,只不過對原來list做擷取而已。

arraylist 也是繼承abstractlist,但是 sublist 和 arraylist 沒有繼承關係,所以不能強轉換。

在 sublist 場景中,高度注意對原集合元素的增加或刪除,均會導致子列表的遍歷、增加、刪除產生 concurrentmodificationexception 異常。

public static void test8()
分析:

1)呼叫sublist方法返回的集合儲存了arraylist的modcount

2)當對原list進行add/remove時,導致modcount++;

3)訪問子集合時,加了checkforcomodification();校驗

我們來看一段**

public static void test9()
執行正常,分析:

sublist返回的集合在呼叫add/remove方法時,會將modcount進行更新。注:更新操作只更新原集合,因為sublist不會重新建立新集合。

總結:

1、sublist 返回的是 arraylist 的內部類 sublist,並不是 arraylist 而是 arraylist 的乙個檢視,對於 sublist 子列表的所有操作最終會反映到原列表上。

2、在 sublist 場景中,高度注意對原集合元素的增加或刪除,均會導致子列表的遍歷、增加、刪除產生 concurrentmodificationexception 異常。

Linux 中su 與su 的區別

linux 中切換使用者的命令是 su 或 su su命令和 su 命令最大的本質區別就是 前者只切換了root身份 但是shell環境仍然是普通使用者的shell 而後者是連使用者和shell 環境一起切換成了root 身份了 只有切換了shell環境才不會出現path環境變數錯誤 su切換成ro...

Linux 中su 與su 的區別

linux 中su 與su 的區別 一 區別 linux 中切換使用者的命令是 su 或 su su命令和 su 命令最大的本質區別就是 前者只切換了root身份 但是shell環境仍然是普通使用者的shell 而後者是連使用者和shell 環境一起切換成了root 身份了 只有切換了shell環境...

linux中su與su 命令的區別

linux中su與su 命令的區別 在我的fc6系統下用普通使用者登入,然後用su命令切換到超級使用者,再輸入ifconfig命令,報錯 command not find。而如果用su 命令切換到超級使用者,再輸入ifconfig命令則能成功執行。這其中涉及的就是su命令與su 命令的區別,man ...