[英]Differences between list.sublist() and stream.limit()
我有兩個版本的代碼截斷現有列表:
版本 1:
List<String> myList = User.getAllNames();
myList = myList.stream().sorted(sortByName).limit(5).collect(Collectors.toList());
版本 2:
List<String> myList = User.getAllNames();
myList.sort(sortByName);
myList = myList.subList(0, 5 - 1);
兩個版本都截斷myList
。 由於版本 2僅使用由其原始列表烘焙的subList
,因此我懷疑版本 2是否也像版本 1一樣從 java 堆(垃圾收集之后)中完全刪除剪輯的元素。
兩個版本之間有什么區別嗎?
我懷疑版本 2 是否也完全從 java 堆中刪除了裁剪的元素(在垃圾收集之后)
假設沒有其他對象引用被剪裁的元素,那么在版本 1 的情況下,它們將有資格進行垃圾回收。
在版本 2 的情況下,由於生成的子列表是原始列表的“視圖”,因此子列表需要保留對原始列表的引用,其中包含所有被剪裁的元素。 因此,那些被剪裁的元素將不符合垃圾回收的條件。
也就是說,除非您的列表有很多元素,否則這可能無關緊要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.