Java 如何根据已合并的两个列表的id对其元素进行排序?
我已经合并了上面的列表,但需要根据id参数对其进行排序。我如何以最简单和最佳的方式做到这一点? 我有一组2个用户,我最初合并了他们,现在我想根据他们的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
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中定义它