Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有组名的Java打印阵列列表组_Java_Android_For Loop_Arraylist - Fatal编程技术网

具有组名的Java打印阵列列表组

具有组名的Java打印阵列列表组,java,android,for-loop,arraylist,Java,Android,For Loop,Arraylist,我只是一个初学者,自己学习Java! 我只有一个用户对象的arraylist: class Users{ public userName; public userNumber; } 然后,我创建一个模型,如下所示: ArrayList<Users> model=new ArrayList<Users>(); 我要做的是以这种方式打印模型,该方式应显示组名为的类似分组数据,如下所示: for(int i=0;i:i<users.size;i++

我只是一个初学者,自己学习Java! 我只有一个用户对象的arraylist:

class Users{
   public userName;
   public userNumber;
}  
然后,我创建一个模型,如下所示:

 ArrayList<Users> model=new ArrayList<Users>();
我要做的是以这种方式打印模型,该方式应显示组名为的类似分组数据,如下所示:

 for(int i=0;i:i<users.size;i++){
    System.out.printlin("users:::"+users.get(i).userNumber);
 }
因此,我想对数据进行分组,然后以分组格式打印数据,并使用每个组名


我怎样才能做到这一点,我只是在自学Java。提前感谢

一种快速简便的方法是使用
HashMap
。散列映射是键值集合,在本例中,您将创建一个
HashMap
,它将
username
存储为键,将
userNumber
存储为值列表(因为您有多个值)

然后您的代码将更改如下:

  • 迭代您拥有的所有用户
  • 如果hashmap中存在
    用户名
    ,请将
    用户名
    添加到其中
  • 如果
    用户名
    不存在,则将其添加到hashmap中,并将
    用户名
    作为其列表的第一个元素

  • 最后,您将在hashmap上迭代,打印它拥有的键和值。

    使用Java Streams尝试下面的方法

    //group by user name
    Map<String, Set<String>> map =
                model.stream().collect(
                        Collectors.groupingBy(Users::getUserName,
                                Collectors.mapping(Users::getUserNumber, Collectors.toSet())
                        )
                );
    System.out.println(map);
    
    //按用户名分组
    地图=
    model.stream().collect(
    Collectors.groupingBy(用户::getUserName,
    Collectors.mapping(Users::getUserNumber,Collectors.toSet())
    )
    );
    系统输出打印项次(map);
    
    确保在Users类中实现getter方法getUserName()、getUserNumber()。这里我假设userName和userNumber都是字符串类型的数据

    public class User {
    private String userName;
    public String getUserName() {
        return userName;
    }
    
    public User(String userName, String userNumber) {
        this.userName = userName;
        this.userNumber = userNumber;
    }
    
    public void setUserName(String userName) {
        this.userName = userName;
    }
    
    public String getUserNumber() {
        return userNumber;
    }
    
    public void setUserNumber(String userPassword) {
        this.userNumber = userPassword;
    }
    
    private String userNumber;
    }
    
    主类
    import java.util.ArrayList;
    导入java.util.HashMap;
    导入java.util.List;
    公共类方法{
    私有静态哈希映射;
    私有静态ArrayList用户列表;
    私有静态ArrayList user2list;
    公共静态void main(字符串…参数){
    maps=新的HashMap();
    user1list=newarraylist();
    user2list=newarraylist();
    用户user1=新用户(“Ram”、“1234”);
    用户user2=新用户(“Alish”,“5678”);
    用户user3=新用户(“Ram”、“91011”);
    用户user4=新用户(“Alish”,“121314”);
    user1list.add(user1);
    user1list.add(user3);
    user2list.add(user2);
    user2list.add(user4);
    maps.put(user1,user1list);
    put(user2,user2list);
    ///用户一列表
    for(用户userone:maps.get(user1)){
    System.out.println(“userone名称::”+userone.getUserName());
    System.out.println(“用户一号::”+userone.getUserNumber());
    }
    System.out.println();
    //用户拖曳列表
    for(user2:maps.get(user2)){
    System.out.println(“用户名:::”+usertwo.getUserName());
    System.out.println(“用户二号::”+usertwo.getUserNumber());
    }
    }
    }
    
    请尝试下面的代码-

    public class Users {
    
    public String userName;
    public String userNumber;
    
    public Users(String userName, String userNumber) {
        this.userName = userName;
        this.userNumber = userNumber;
    }
    
    public String getUserName() {
        return userName;
    }
    
    public void setUserName(String userName) {
        this.userName = userName;
    }
    
    public String getUserNumber() {
        return userNumber;
    }
    
    public void setUserNumber(String userNumber) {
        this.userNumber = userNumber;
    }
    
    public static void main(String ar[]) {
    
        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"));
    
        Map<String, Set<String>> map = model.stream().collect(Collectors.groupingBy(Users::getUserName,
                Collectors.mapping(Users::getUserNumber, Collectors.toSet())));
        for (Map.Entry<String, Set<String>> entry : map.entrySet()) {
            Set set = entry.getValue();
            Iterator value = set.iterator();
            while (value.hasNext()) {
                System.out.println(entry.getKey() + " : " + value.next());
            }
        }
    
    }
    
    公共类用户{
    公共字符串用户名;
    公共字符串用户号;
    公共用户(字符串用户名、字符串用户名){
    this.userName=用户名;
    this.userNumber=userNumber;
    }
    公共字符串getUserName(){
    返回用户名;
    }
    public void setUserName(字符串用户名){
    this.userName=用户名;
    }
    公共字符串getUserNumber(){
    返回用户号;
    }
    public void setUserNumber(字符串userNumber){
    this.userNumber=userNumber;
    }
    公共静态void main(字符串ar[]{
    ArrayList模型=新的ArrayList();
    新增(新用户(“abc”、“123”));
    添加(新用户(“def”、“888”);
    新增(新用户(“abc”、“246”);
    添加(新用户(“def”、“999”);
    新增(新用户(“abc”、“456”));
    Map Map=model.stream().collect(Collectors.groupingBy(Users::getUserName,
    Collectors.mapping(Users::getUserNumber,Collectors.toSet());
    对于(Map.Entry:Map.entrySet()){
    Set=entry.getValue();
    迭代器值=set.Iterator();
    while(value.hasNext()){
    System.out.println(entry.getKey()+“:”+value.next());
    }
    }
    }
    

    }

    您需要使用
    java.util.Map
    ,此数据结构保存键值对。您的密钥将是userName,值将是userNumber列表。然后,您可以有一个循环来打印来自映射的条目。您还可以阅读java8流api。最好的是:)如果您只想打印数据,那么您可以使用oveeride方法在用户类中字符串。链接()
    public class User {
    private String userName;
    public String getUserName() {
        return userName;
    }
    
    public User(String userName, String userNumber) {
        this.userName = userName;
        this.userNumber = userNumber;
    }
    
    public void setUserName(String userName) {
        this.userName = userName;
    }
    
    public String getUserNumber() {
        return userNumber;
    }
    
    public void setUserNumber(String userPassword) {
        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) {
        maps = new HashMap<>();
        user1list = new ArrayList<>();
        user2list = new ArrayList<>();
        User user1 = new User("Ram", "1234");
        User user2 = new User("Alish", "5678");
        User user3 = new User("Ram", "91011");
        User user4 = new User("Alish", "121314");
        user1list.add(user1);
        user1list.add(user3);
        user2list.add(user2);
        user2list.add(user4);
        maps.put(user1, user1list );
        maps.put(user2, user2list);
    
       /// User one lists
        for ( User userone: maps.get(user1)) {
            System.out.println("userone Name:::"+userone.getUserName());
            System.out.println("User one Number:::"+userone.getUserNumber());
        }
    
        System.out.println();
         // USer tow list
        for (User usertwo: maps.get(user2)) {
            System.out.println("User two Name:::" +usertwo.getUserName());
            System.out.println("User two Number :::" +usertwo.getUserNumber());
        }
      }
     }
    
    public class Users {
    
    public String userName;
    public String userNumber;
    
    public Users(String userName, String userNumber) {
        this.userName = userName;
        this.userNumber = userNumber;
    }
    
    public String getUserName() {
        return userName;
    }
    
    public void setUserName(String userName) {
        this.userName = userName;
    }
    
    public String getUserNumber() {
        return userNumber;
    }
    
    public void setUserNumber(String userNumber) {
        this.userNumber = userNumber;
    }
    
    public static void main(String ar[]) {
    
        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"));
    
        Map<String, Set<String>> map = model.stream().collect(Collectors.groupingBy(Users::getUserName,
                Collectors.mapping(Users::getUserNumber, Collectors.toSet())));
        for (Map.Entry<String, Set<String>> entry : map.entrySet()) {
            Set set = entry.getValue();
            Iterator value = set.iterator();
            while (value.hasNext()) {
                System.out.println(entry.getKey() + " : " + value.next());
            }
        }
    
    }