使用Java对对象集合进行高效操作:Map法与直接法

dpiehjr4  于 2023-05-21  发布在  Java
关注(0)|答案(1)|浏览(119)

我目前正在做一个Java项目,我有一个特定的场景,我需要对一个对象集合执行操作。我想知道哪种方法在性能方面更有效。
假设我有一个A类型的对象数组x,每个对象A都有一个对B类型对象的引用作为成员(A.c.b)。我需要对每个B对象执行一些操作。
方法1:创建一个Map,然后在其上迭代

Map<A, B> map = new HashMap<>();
for (A a : x) {
    map.put(a, a.c.b);
}

for (Map.Entry<A, B> entry : map.entrySet()) {
    entry.getValue().dosomeoperation();
}

方法2:直接对对象执行操作

for (A a : x) {
    a.c.b.dosomeoperation();
}

我知道方法2消除了创建和填充Map的开销,但我不确定这两种方法之间的实际性能差异。有专业人士能解释一下吗?
在我的具体例子中,x数组的大小可以变化,我对优化代码的性能很感兴趣。了解这些方法的潜在性能影响以及我在做出决定时应该考虑的任何因素将很有帮助。
任何见解或替代建议将不胜感激。感谢您的评分

xu3bshqb

xu3bshqb1#

您的问题中显示的Map没有增加任何价值。它在对象a和它的嵌套成员b之间创建一个关联。但是您已经有了ab的关联:嵌套字段成员资格 * 是 * 该关联。
如果要对嵌套成员字段执行单个操作,则只需访问该字段。
不需要任何收藏。创建一个没有特定目的的集合,比如排序,只是额外的工作,没有任何好处。

for (A a : x) {
    a.c.b.dosomeoperation();
}

或者使用流。

Arrays
.stream( x )
.forEach( 
    ( A a ) -> a.c.b.dosomeoperation()
) ;

如果您对某些复杂因素或操作有顾虑,请修改您的问题以进行解释。

相关问题