Java 打印带有组名称的 ArrayList 组

我只是一个初学者,正在自学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。提前致谢


九州编程
浏览 116回答 5
5回答

holdtom

public class User {private String userName;public String getUserName() {&nbsp; &nbsp; return userName;}public User(String userName, String userNumber) {&nbsp; &nbsp; this.userName = userName;&nbsp; &nbsp; this.userNumber = userNumber;}public void setUserName(String userName) {&nbsp; &nbsp; this.userName = userName;}public String getUserNumber() {&nbsp; &nbsp; return userNumber;}public void setUserNumber(String userPassword) {&nbsp; &nbsp; this.userNumber = userPassword;}private String userNumber;}主类import java.util.ArrayList;import java.util.HashMap;import java.util.List;public class MainMethod {private static HashMap<User, ArrayList<User>> maps;private static ArrayList<User> user1list;private static ArrayList<User> user2list;public static void main(String...args) {&nbsp; &nbsp; maps = new HashMap<>();&nbsp; &nbsp; user1list = new ArrayList<>();&nbsp; &nbsp; user2list = new ArrayList<>();&nbsp; &nbsp; User user1 = new User("Ram", "1234");&nbsp; &nbsp; User user2 = new User("Alish", "5678");&nbsp; &nbsp; User user3 = new User("Ram", "91011");&nbsp; &nbsp; User user4 = new User("Alish", "121314");&nbsp; &nbsp; user1list.add(user1);&nbsp; &nbsp; user1list.add(user3);&nbsp; &nbsp; user2list.add(user2);&nbsp; &nbsp; user2list.add(user4);&nbsp; &nbsp; maps.put(user1, user1list );&nbsp; &nbsp; maps.put(user2, user2list);&nbsp; &nbsp;/// User one lists&nbsp; &nbsp; for ( User userone: maps.get(user1)) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("userone Name:::"+userone.getUserName());&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("User one Number:::"+userone.getUserNumber());&nbsp; &nbsp; }&nbsp; &nbsp; System.out.println();&nbsp; &nbsp; &nbsp;// USer tow list&nbsp; &nbsp; for (User usertwo: maps.get(user2)) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("User two Name:::" +usertwo.getUserName());&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("User two Number :::" +usertwo.getUserNumber());&nbsp; &nbsp; }&nbsp; }&nbsp;}

烙印99

Map<String,&nbsp;List<Users>>&nbsp;use&nbsp;=&nbsp;model.stream.collect(Collectors.groupinBy(Person::getUsername))&nbsp;;您可以使用这种方法按组打印数据

潇湘沐

使用 Java Streams 尝试如下所示。//group by user nameMap<String, Set<String>> map =&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; model.stream().collect(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Collectors.groupingBy(Users::getUserName,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Collectors.mapping(Users::getUserNumber, Collectors.toSet())&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );System.out.println(map);确保在 Users 类中实现getter 方法getUserName()、getUserNumber() 。这里我假设userName和userNumber都是字符串类型的数据。

潇潇雨雨

完成您想要的操作的一种快速而简单的方法是使用HashMap.&nbsp;哈希映射是键值集合,在您的情况下,您将创建一个HashMap<String, List<String>>存储username键和userNumber值列表的存储(因为您有多个值)。那么你的代码将更改如下:迭代您拥有的所有用户。如果usernamehashmap 中存在,则将其添加usernumber到其中。如果username不存在,则将其添加到哈希映射中,并将 用作usernumber其列表的第一个元素。最后,您将迭代哈希图,打印它所具有的键和值。

慕娘9325324

请尝试下面的代码 -public class Users {public String userName;public String userNumber;public Users(String userName, String userNumber) {&nbsp; &nbsp; this.userName = userName;&nbsp; &nbsp; this.userNumber = userNumber;}public String getUserName() {&nbsp; &nbsp; return userName;}public void setUserName(String userName) {&nbsp; &nbsp; this.userName = userName;}public String getUserNumber() {&nbsp; &nbsp; return userNumber;}public void setUserNumber(String userNumber) {&nbsp; &nbsp; this.userNumber = userNumber;}public static void main(String ar[]) {&nbsp; &nbsp; ArrayList<Users> model = new ArrayList<Users>();&nbsp; &nbsp; model.add(new Users("abc", "123"));&nbsp; &nbsp; model.add(new Users("def", "888"));&nbsp; &nbsp; model.add(new Users("abc", "246"));&nbsp; &nbsp; model.add(new Users("def", "999"));&nbsp; &nbsp; model.add(new Users("abc", "456"));&nbsp; &nbsp; Map<String, Set<String>> map = model.stream().collect(Collectors.groupingBy(Users::getUserName,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Collectors.mapping(Users::getUserNumber, Collectors.toSet())));&nbsp; &nbsp; for (Map.Entry<String, Set<String>> entry : map.entrySet()) {&nbsp; &nbsp; &nbsp; &nbsp; Set set = entry.getValue();&nbsp; &nbsp; &nbsp; &nbsp; Iterator value = set.iterator();&nbsp; &nbsp; &nbsp; &nbsp; while (value.hasNext()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(entry.getKey() + " : " + value.next());&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java