Java 如何根据已合并的两个列表的id对其元素进行排序?

Java 如何根据已合并的两个列表的id对其元素进行排序?,java,Java,我已经合并了上面的列表,但需要根据id参数对其进行排序。我如何以最简单和最佳的方式做到这一点? 我有一组2个用户,我最初合并了他们,现在我想根据他们的id对他们进行排序,然后显示结果。有什么想法吗 import java.io.*; import java.util.*; /* * To execute Java, please define "static void main" on a class * named Solution. * * If you need m

我已经合并了上面的列表,但需要根据id参数对其进行排序。我如何以最简单和最佳的方式做到这一点? 我有一组2个用户,我最初合并了他们,现在我想根据他们的id对他们进行排序,然后显示结果。有什么想法吗

  import java.io.*;
    import java.util.*;


/*
 * To execute Java, please define "static void main" on a class
 * named Solution.
 *
 * If you need more classes, simply define them inline.
 */

class Employee {
  public String name;
  public int id;

  Employee(String name, int id) {
    this.name = name;
    this.id = id;
  }


  public String toString() {
    return "<name: " + this.name + ", id: " + this.id + ">";
  }
}

class Person {
  public String name;
  public int id;

  Person(String name, int id) {
    this.name = name;
    this.id = id;
  }

  public String toString() {
    return "<name: " + this.name + ", id: " + this.id + ">";
  }
}


public class Solution {
  public static void main(String[] args) {
    List<Employee> employee = generateEmployees();
    List<Person> persons = generatePersons();


ArrayList<Object> merged = new ArrayList<Object>(employee);
        merged.addAll(person);
        System.out.println("merged:"+merged +"\n");


   for(int i=0;i<users.size();i++){
        if(person.get(i).id<=5){
        System.out.println("UserName:"+person.get(i).name+"\n");
        }
      }
     for(int i=0;i<employee.size();i++){
       if(employee.get(i).id<=5){
        System.out.println("DesignerName:"+employee.get(i).name+"\n");
        }
      }

});

  }
import java.io.*;
导入java.util.*;
/*
*要执行Java,请在类上定义“staticvoidmain”
*命名解决方案。
*
*如果需要更多的类,只需内联定义它们。
*/
班级员工{
公共字符串名称;
公共int id;
Employee(字符串名,int-id){
this.name=名称;
this.id=id;
}
公共字符串toString(){
返回“”;
}
}
班主任{
公共字符串名称;
公共int id;
Person(字符串名称,int-id){
this.name=名称;
this.id=id;
}
公共字符串toString(){
返回“”;
}
}
公共类解决方案{
公共静态void main(字符串[]args){
List employee=generateeemployees();
列出人员=生成人员();
ArrayList merged=新的ArrayList(员工);
合并。添加所有(个人);
System.out.println(“合并:“+merged+”\n”);

对于(int i=0;i假设您有一个名为
用户的
用户列表:

users.stream().sorted(Comparator.comparing(User::getId)).forEach(System.out::println);

假设您有名为
用户的
用户列表

users.stream().sorted(Comparator.comparing(User::getId)).forEach(System.out::println);

User
Designer
必须从同一个类扩展。(或
Designer extand User
)。
然后创建一个比较器()并使用
merged.sort(myComparator)
()

[编辑]

class MyComparator implements Comparator<User> {
    @Override
    public int compare(User o1, User o2) {
        return Integer.compare(o1.id, o2.id);
    }
}


public class User {
    public String name;
    public int id;

    User(String name, int id) {
        this.name = name;
        this.id = id;
    }

    public String toString() {
        return "<name: " + this.name + ", id: " + this.id + ">";
    }

}



public class Designer extends User{
    Designer(String enter code herename, int id) {
        super(name, id);
    }
}


public class Solution {
    public static void main(String[] args) {
        ...

        ArrayList<User> merged = new ArrayList<User>(designers);
        merged.addAll(users);
        merged.sort(new MyComparator());
...
    }
}
类MyComparator实现比较器{
@凌驾
公共整数比较(用户o1、用户o2){
返回整数。比较(o1.id,o2.id);
}
}
公共类用户{
公共字符串名称;
公共int id;
用户(字符串名,int-id){
this.name=名称;
this.id=id;
}
公共字符串toString(){
返回“”;
}
}
公共类设计器扩展了用户{
设计器(字符串在此输入代码name,int id){
超级(姓名、身份证);
}
}
公共类解决方案{
公共静态void main(字符串[]args){
...
合并的ArrayList=新的ArrayList(设计器);
合并.添加所有(用户);
merged.sort(新的MyComparator());
...
}
}

用户
设计器
必须从同一个类扩展。(或
设计器和用户
)。
然后创建一个比较器()并使用
merged.sort(myComparator)
()

[编辑]

class MyComparator implements Comparator<User> {
    @Override
    public int compare(User o1, User o2) {
        return Integer.compare(o1.id, o2.id);
    }
}


public class User {
    public String name;
    public int id;

    User(String name, int id) {
        this.name = name;
        this.id = id;
    }

    public String toString() {
        return "<name: " + this.name + ", id: " + this.id + ">";
    }

}



public class Designer extends User{
    Designer(String enter code herename, int id) {
        super(name, id);
    }
}


public class Solution {
    public static void main(String[] args) {
        ...

        ArrayList<User> merged = new ArrayList<User>(designers);
        merged.addAll(users);
        merged.sort(new MyComparator());
...
    }
}
类MyComparator实现比较器{
@凌驾
公共整数比较(用户o1、用户o2){
返回整数。比较(o1.id,o2.id);
}
}
公共类用户{
公共字符串名称;
公共int id;
用户(字符串名,int-id){
this.name=名称;
this.id=id;
}
公共字符串toString(){
返回“”;
}
}
公共类设计器扩展了用户{
设计器(字符串在此输入代码name,int id){
超级(姓名、身份证);
}
}
公共类解决方案{
公共静态void main(字符串[]args){
...
合并的ArrayList=新的ArrayList(设计器);
合并.添加所有(用户);
merged.sort(新的MyComparator());
...
}
}

我不确定我遗漏了什么,但最简单的方法可能是让
用户
类实现
可比较的
接口,然后调用
合并的.Sort()
。你也可以看看Streams。你能用一个例子来解释吗?你可以看看例子。我不确定我遗漏了什么,但最简单的方法可能是让
用户
类实现
可比较的
接口,然后调用
合并的.Sort()
。你也可以看看Streams。你能用一个例子来解释吗?你可以看看例子。merged有一组新的用户。但是它是一个arraylist,这种方式还能用吗?还有什么getid()?我需要创建一个名为Mergedusers的新类吗?您不应该将
User
Designer
合并到
ArrayList
。除此之外,它们都有相同的字段,请尝试以下操作:
公共类设计器扩展用户{public Designer(String name,int id){super(name,id);}
然后使用
ArrayList
和排序方法。我应该在user或designer中定义getID()?你应该在Usermerged中定义它,因为它有一组新的用户。但是它是ArrayList,这种方法仍然有效吗?getID()也是什么?我需要创建一个名为Mergedusers的新类吗?您不应该将
User
Designer
合并到
ArrayList
。除此之外,它们都有相同的字段,请尝试以下操作:
公共类设计器扩展用户{public Designer(String name,int id){super(name,id);}
然后使用
ArrayList
和排序方法。我应该在user或designer中定义getID(),还是应该在user中定义它