java - 收集集合中对象的属性

标签 java collections properties

在 C# 中我可以这样做:

IEnumerable<long> ids = things.select(x => x.Id);

在 Java 中我必须这样做:

Collection<Long> ids = new ArrayList<Long>(things.size());
for(Thing x : things)
   ids.add(x.getId());

现在必须经常做这类事情,想知道是否有更通用的方法在 Java 中执行此操作。可以创建一个方法来执行此操作,但随后我将不得不添加一个带有 getId 方法或类似方法的接口(interface)...我不能...

最佳答案

使用 Guava ,特别是 function interface :

public class ThingFunction implements Function<Thing, Long> {
    @Override
    public Long apply(Thing thing) {
        return user.getId();
    }
} 

并像这样调用(其中 transform 是从 guava 的 Collections2 静态导入的:

Collection<Long> ids = transform(things, new ThingFunction());

Guava 有不少other benefits也是。

关于java - 收集集合中对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8210382/

相关文章:

java - 如何测试依赖于初始参数的方法?

java - 使用集合时覆盖的规则

java - Spring Boot Swagger 2 配置错误创建名称为 'documentationPluginsBootstrapper' 的 bean

java - 修复找不到符号 mInterstitialAd = new InterstitialAd(this);符号 : variable mInterstitialAd location: class Ads

recursion - 如何在 Kotlin 中使用 FoldRight 递归实现 dropWhile

properties - 未调用 Swift 中的访问器方法

c# - 在属性 setter 中采用多种类型

javascript - Javascript 中的服务器代码

java - 如何截取在 selenium 中失败的 webelement(部分屏幕而不是整个页面)

c# - 只读字符串列表