创建Java列表的"视图"

pti*_*obj 8 java list

做什么的时候

// creating list1, adding items
LinkedList slist = new LinkedList();
slist = subList(list1, 2,5);
Run Code Online (Sandbox Code Playgroud)

我将有一个第二个对象("list"元素2到5的"副本")由subList返回并包含在slist中.但是,出于性能/内存的原因,我想有一些东西只给我一个list1的"视图",而不创建新对象而不分配新内存.

Thi*_*ilo 14

我认为List#subList完全符合您的要求:

返回指定fromIndex(包含)和toIndex(独占)之间此列表部分的视图.(如果fromIndex和toIndex相等,则返回的列表为空.)返回的列表由此列表支持,因此返回列表中的非结构更改将反映在此列表中,反之亦然.

List slist = list1.subList(2, 5);
Run Code Online (Sandbox Code Playgroud)

当然,需要创建一个新的(包装器)对象,但是列表的数据结构和所有元素都将被重用.包装器只跟踪开始和结束指针.