我只是一个初学者,学习Java对我自己!我只是有一个数组列表的对象的用户:
class Users{
public userName;
public userNumber;
}
然后我创建一个模型
ArrayList<Users> model=new ArrayList<Users>();
并将模型项添加为:
model.add(new Users("abc","123"));
model.add(new Users("def","888"));
model.add(new Users("abc","246"));
model.add(new Users("def","999"));
model.add(new Users("abc","456"));
我想要做的是以这种方式打印模型,应该显示类似的分组数据,组名如下:
for(int i=0;i:i<users.size;i++){
System.out.printlin("users:::"+users.get(i).userNumber);
}
但它也应该按名称分组和打印组,即:
abc ->
users:::123
users:::246
users:::456
def ->
users:::888
users:::999
所以我想分组数据,然后打印数据在分组格式与每个组名也!
我怎么能做到呢,我只是在自己学习Java。提前感谢
5条答案
按热度按时间fkaflof61#
一个快速简单的方法就是使用
HashMap
.哈希Map是键-值集合,在你的例子中,你可以创建一个HashMap<String, List<String>>
,它把username
存储为键,把userNumber
存储为值列表(因为你有不止一个值).然后,代码将更改如下:
1.迭代您拥有的所有用户。
1.如果散列表中存在
username
,则将usernumber
添加到其中。1.如果
username
不存在,则将其添加到散列表中,并将usernumber
作为其列表的第一个元素。最后,您将迭代哈希Map,打印它所具有的键和值。
57hvy0tb2#
使用Java Streams尝试类似下面的操作。
确保在用户类中实现getter方法 getUserName(),getUserNumber()。这里我假设 userName 和 userNumber 都是字符串类型的数据。
kfgdxczn3#
主类
yquaqz184#
请尝试以下代码-
}
oknrviil5#
使用=模型.流.收集(收集器.分组依据(个人::获取用户名));
您可以使用此方法按组打印数据