加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在集合上调用方法以添加到另一个集合

发布时间:2020-12-15 04:10:37 所属栏目:Java 来源:网络整理
导读:我必须继续编写比我想要的更长的代码,而且我必须做很多次. CollectionMiClase collection1 = new ArrayListMiClase;CollectionString collection2 = new ArrayListString;// I currently do thisfor (MiClase c : collection1){ collection2.add(c.nombre())
我必须继续编写比我想要的更长的代码,而且我必须做很多次.

Collection<MiClase> collection1 = new ArrayList<MiClase>;
Collection<String> collection2 = new ArrayList<String>;
// I currently do this
for (MiClase c : collection1){
    collection2.add(c.nombre()); // nombre() returns String
}

有什么东西可以缩短它吗?

// I want something like
collection2.addAll(collection1,MiClase.nombre);

解决方法

没有内置的java函数可以做到这一点1.你可以用Guavas’ Collections2#transform(collection,function)‘

所以,你的代码看起来像

// nombres = collections2,miClasses = collection1
nombres.addAll(Collections2.transform(miClasses,new Function() {
    @Override
    public String apply (MiClasse miClasse) {
        return miClasse.nombre();
    }
}));

但这真的很麻烦,只是删除一个简单的循环可能是一种过度杀伤.

编辑

1 – 正如A.R.S.所指出的,在Java 8 lambda表达式和改进的集合API之前没有内置.链接有一些很酷的例子:http://www.javabeat.net/2012/05/enhanced-collections-api-in-java-8-supports-lambda-expressions/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读