如果我理解,你有一个 List<YourObject> 其中YourObject 是类:
public class YourObject {
public String code;
public String userName;
// getters and constructor(s)
}
当你说:
我必须只显示代码和与每个代码关联的用户名列表
这意味着在您的List<YourObject> 中,如果两个对象 A 和 B 具有相同的代码值 X,您希望显示类似“代码 X ; usernames = [A.getUserName(), B.getUserName()] “?
但您还想添加一个userCount 属性,它是用户名列表的大小(在我上面的示例中:2)。
我认为您可以创建一个实用方法,将您的List<YourObject> 作为参数并返回一个Map<String,List<String>>,其中键字符串是代码,字符串列表是用户名。
类似:(对不起流版本,我懒得写更多行):
public static Map<String,List<String>> process(List<YourObject> list) {
return list.stream().collect(Collectors.toMap(YourObject::getCode, x -> list.stream().filter(e -> x.getCode().equals(e.getCode())).map(YourObject::getUserName).collect(Collectors.toList()), (x,y) -> x));
}
你想要的显示:
process(yourList).forEach((k,v) -> {
System.out.println("Code : " + k + " | userCount :" + v.size() + " | Usernames =" + v)
});