如何在 Java 中正确 return ArrayList 的一部分?
How to properly return part of ArrayList in Java?
我有一个 class SomeClass
和一个静态成员 myMap
enter code here
,它具有从文件反序列化的形式 HasmMap<String,ArrayList<SomeOtherClass>>
。
我有办法
public ArrayList<SomeOtherClass> getList(final String key, final int N)
应该在地图中查找 key
和 return 相应 ArrayList
的第一个 N
元素,或者如果列表有 <= N
个元素。我应该如何实现下面的 TODO
行:
public ArrayList<SomeOtherClass> getList(final String key, final int N)
{
ArrayList<SomeOtherClass> arr = myMap.get(key);
if (arr == null) return null;
if (arr.size() <= N)
{
return arr;
}
else
{
// TODO: return first N elements
}
}
有效地做到这一点,即不在内存中创建不需要的副本,同时实际上return输入正确的数据?
使用 List
s subList
method 创建子列表。
Returns a view of the portion of this list between the specified fromIndex, inclusive, and toIndex, exclusive.
The returned list is backed by this list, so non-structural changes in the returned list are reflected in this list, and vice-versa.
从索引 0(包含起始索引)开始,到索引 N
(不包含结束索引)结束。
return arr.subList(0, N);
这不会将项目复制到新列表;它 returns 现有列表的列表视图。
return arr.subList(0, N);
文档是你的朋友。
https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#subList(int,%20int)
我有一个 class SomeClass
和一个静态成员 myMap
enter code here
,它具有从文件反序列化的形式 HasmMap<String,ArrayList<SomeOtherClass>>
。
我有办法
public ArrayList<SomeOtherClass> getList(final String key, final int N)
应该在地图中查找 key
和 return 相应 ArrayList
的第一个 N
元素,或者如果列表有 <= N
个元素。我应该如何实现下面的 TODO
行:
public ArrayList<SomeOtherClass> getList(final String key, final int N)
{
ArrayList<SomeOtherClass> arr = myMap.get(key);
if (arr == null) return null;
if (arr.size() <= N)
{
return arr;
}
else
{
// TODO: return first N elements
}
}
有效地做到这一点,即不在内存中创建不需要的副本,同时实际上return输入正确的数据?
使用 List
s subList
method 创建子列表。
Returns a view of the portion of this list between the specified fromIndex, inclusive, and toIndex, exclusive.
The returned list is backed by this list, so non-structural changes in the returned list are reflected in this list, and vice-versa.
从索引 0(包含起始索引)开始,到索引 N
(不包含结束索引)结束。
return arr.subList(0, N);
这不会将项目复制到新列表;它 returns 现有列表的列表视图。
return arr.subList(0, N);
文档是你的朋友。
https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#subList(int,%20int)