java - 如何在 Java 中正确返回 ArrayList 的一部分?

标签 java arraylist sub-array

我有一个类SomeClass使用静态成员 myMap enter code here其形式为 HasmMap<String,ArrayList<SomeOtherClass>>从文件中反序列化。

我有一个方法

public ArrayList<SomeOtherClass> getList(final String key, final int N)

应该查找 key在 map 中并返回第一个 N元素对应ArrayList , 或者如果列表有 <= 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
    }
}

如何高效地执行此操作,即在实际返回正确数据的同时不在内存中创建不需要的副本?

最佳答案

Lists 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);

这不会将项目复制到新列表;它返回现有列表的 ListView 。

关于java - 如何在 Java 中正确返回 ArrayList 的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34731034/

相关文章:

java - 没有找到合适的方法 addAll(List<Integer>)

java - Android:Parse.com 与 findInBackground() 的并发问题

java - Hibernate:如何将 B 是 A 的属性进行一对一映射?

android - 将 ArrayList 保存到 SharedPreferences

java - 将一个数组列表替换为另一列表

c - 如何将 n 长度的数组划分为 k 个大小大致相等的子数组(在 C 中)?

c - 使用边界条件导航映射到 1D 的 2D 数组

JAVA:基于多维度选择算法

java - 公历

javascript - 过滤数组中的子数组