创建Java列表的“视图”

时间:2011-01-12 09:06:55

标签: java list

做类似

的事情
// creating list1, adding items
LinkedList slist = new LinkedList();
slist = subList(list1, 2,5);

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

1 个答案:

答案 0 :(得分:14)

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

  

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

List slist = list1.subList(2, 5);

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