pj2*_*494 0 java collections arraylist java-8 java-stream
我想根据一个字段将三种不同类型的列表合并到一个列表中。
A(id, val1)
B(id, val2)
C(id, val3)
D(id, val1, val2, val3)
Run Code Online (Sandbox Code Playgroud)
List<A> AList;
List<B> BList;
List<C> CList;
Run Code Online (Sandbox Code Playgroud)
List<D> DList;
Run Code Online (Sandbox Code Playgroud)
使用流和谓词将 AList、BList、CList 合并到 DList。
一种方法是首先使用 n^2 复杂度合并 AList 和 BList 以获得 DList(带有 val1 和 val2);然后循环 DList 以再次使用 n^2 用 CList 填充 val3。所以复杂性将是
n^2 + n^2 = n^2
一季度。有没有更好的方法来提高复杂性?Q2。我想使用 Predicate 和 Stream 来解决这个问题,所以使代码可读性强。
O(n)如果您愿意使用O(n)额外的空间,您可以这样做。
idto 的val1映射、idto 的val2映射和idto 的映射val3(通过迭代三个列表一次)。List<D>. 您可以访问 中的其他vals O(1)。编辑:这是假定对象的ID已经equals和hashcode实施。
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |