连接一组对象,在java中按值分组

我在拍Set对象是包括namevalue。我的要求是Set通过将Set具有相同valueconcate属性的基于对象分组name为一个string",".

例子:

   Name: Test,     value: Random value
   Name: Test 2,   value: Some random value
   Name: Test 3,   value: Random value

我希望结果是这样的Set

Name: Test, Test 3,  value: Random value
Name: Test 2 ,   value: Some random value

的理解:

public class Test {
    private String name;
    private String value;
    }

如何创建一个新Set的分组Set依据value串联namestring使用Java流?

回答

toMap与合并一起使用(另外流元素在按名称排序之前):

Set<Test> result = s.stream()
                    .sorted((t1,t2)-> t1.getName().compareTo(t2.getName())) 
                    .collect(Collectors.toMap(Test::getValue, 
                                              Function.identity(),
                                              (t1,t2)-> new Test(t1.getName()+","+t2.getName(),
                                                                 t1.getValue())))
                                       .values()
                                       .stream()
                                       .collect(Collectors.toSet());


以上是连接一组对象,在java中按值分组的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>