Java 将一个arraylist分别排序到另一个arraylist
我有一个Java 将一个arraylist分别排序到另一个arraylist,java,android,sorting,comparator,Java,Android,Sorting,Comparator,我有一个ArrayList(列表A)包含一些ID,另一个ArrayList(列表B)包含名称 Collections.sort(list A); 我需要根据对应的ID获取列表B。在这种情况下我应该怎么做?一种可能的方法是: 创建一个类并向其中添加所需的属性。然后使用比较器根据需要进行排序 我已经给出了如何根据班级的id和name进行排序的示例Student public class Student { private int id; private String name;
ArrayList
(列表A)包含一些ID,另一个ArrayList
(列表B)包含名称
Collections.sort(list A);
我需要根据对应的ID获取列表B。在这种情况下我应该怎么做?一种可能的方法是: 创建一个
类
并向其中添加所需的属性。然后使用比较器
根据需要进行排序
我已经给出了如何根据班级的id
和name
进行排序的示例Student
public class Student {
private int id;
private String name;
public Student(int id, String name) {
this.id=id;
this.name=name;
}
@Override
public String toString() {
return this.id+"-"+this.name;
}
public String getName(){
return this.name;
}
public static void main(String[] args) {
List<Student> stu = new ArrayList<>();
stu.add(new Student(4,"Alaska"));
stu.add(new Student(5,"Barlin"));
stu.add(new Student(9,"America"));
stu.add(new Student(2,"India"));
Comparator<Student> byId = (Student s1,Student s2)->(s1.id)-(s2.id); //java 8 lambda expression
stu.sort(byId);
System.out.println(stu);
//Way-1 -java 8 lambda expression
Comparator<Student> byName = (Student s1,Student s2)->s1.getName().compareTo(s2.getName());
//Way-2 - java 8 method reference
//Comparator<Student> byName = Comparator.comparing(Student::getName);
stu.sort(byName);
System.out.println(stu);
}
}
公共班级学生{
私有int-id;
私有字符串名称;
公立学生(整数id,字符串名称){
这个.id=id;
this.name=name;
}
@凌驾
公共字符串toString(){
返回this.id+“-”+this.name;
}
公共字符串getName(){
返回此.name;
}
公共静态void main(字符串[]args){
List stu=new ArrayList();
学生增补(新学生(4,“阿拉斯加”);
学生增补(新学生(5名,“巴林”);
学生增补(新学生(9,“美国”);
学生增补(新学生(2,“印度”);
比较器byId=(学生s1,学生s2)->(s1.id)-(s2.id);//java 8 lambda表达式
stu.sort(byId);
系统输出打印(stu);
//Way-1-java 8 lambda表达式
比较器byName=(学生s1,学生s2)->s1.getName().compareTo(s2.getName());
//方式2-Java8方法参考
//Comparator byName=Comparator.comparing(学生::getName);
排序(按名称);
系统输出打印(stu);
}
}
[2-印度,4-阿拉斯加,5-巴林,9-美国]
[4-阿拉斯加,9-美洲,5-巴林,2-印度]
实现这一点的一种可能方法是:
创建一个类
并向其中添加所需的属性。然后使用比较器
根据需要进行排序
我已经给出了如何根据班级的id
和name
进行排序的示例Student
public class Student {
private int id;
private String name;
public Student(int id, String name) {
this.id=id;
this.name=name;
}
@Override
public String toString() {
return this.id+"-"+this.name;
}
public String getName(){
return this.name;
}
public static void main(String[] args) {
List<Student> stu = new ArrayList<>();
stu.add(new Student(4,"Alaska"));
stu.add(new Student(5,"Barlin"));
stu.add(new Student(9,"America"));
stu.add(new Student(2,"India"));
Comparator<Student> byId = (Student s1,Student s2)->(s1.id)-(s2.id); //java 8 lambda expression
stu.sort(byId);
System.out.println(stu);
//Way-1 -java 8 lambda expression
Comparator<Student> byName = (Student s1,Student s2)->s1.getName().compareTo(s2.getName());
//Way-2 - java 8 method reference
//Comparator<Student> byName = Comparator.comparing(Student::getName);
stu.sort(byName);
System.out.println(stu);
}
}
公共班级学生{
私有int-id;
私有字符串名称;
公立学生(整数id,字符串名称){
这个.id=id;
this.name=name;
}
@凌驾
公共字符串toString(){
返回this.id+“-”+this.name;
}
公共字符串getName(){
返回此.name;
}
公共静态void main(字符串[]args){
List stu=new ArrayList();
学生增补(新学生(4,“阿拉斯加”);
学生增补(新学生(5名,“巴林”);
学生增补(新学生(9,“美国”);
学生增补(新学生(2,“印度”);
比较器byId=(学生s1,学生s2)->(s1.id)-(s2.id);//java 8 lambda表达式
stu.sort(byId);
系统输出打印(stu);
//Way-1-java 8 lambda表达式
比较器byName=(学生s1,学生s2)->s1.getName().compareTo(s2.getName());
//方式2-Java8方法参考
//Comparator byName=Comparator.comparing(学生::getName);
排序(按名称);
系统输出打印(stu);
}
}
[2-印度,4-阿拉斯加,5-巴林,9-美国]
[4-阿拉斯加,9-美洲,5-巴林,2-印度]
公共A类{
公共静态void main(字符串[]args){
List idList=new ArrayList();
添加(5);
添加(2);
添加(4);
添加(1);
添加(3);
列表名称列表=新的ArrayList();
姓名列表。添加(“Priya”);
姓名列表。添加(“Pooja”);
姓名列表。添加(“Sneha”);
姓名列表。添加(“Ritesh”);
姓名列表。添加(“Nikita”);
Map Map=newhashmap();
for(int i=0;i
}公共A类{
公共静态void main(字符串[]args){
List idList=new ArrayList();
添加(5);
添加(2);
添加(4);
添加(1);
添加(3);
列表名称列表=新的ArrayList();
姓名列表。添加(“Priya”);
姓名列表。添加(“Pooja”);
姓名列表。添加(“Sneha”);
姓名列表。添加(“Ritesh”);
姓名列表。添加(“Nikita”);
Map Map=newhashmap();
for(int i=0;i
}无需新列表进行排序。因为它们是映射的,所以可以直接使用
public class A {
public static void main(String[] args) {
List<Integer> idList = new ArrayList<Integer>();
idList.add(5);
idList.add(2);
idList.add(4);
idList.add(1);
idList.add(3);
List<String> nameList = new ArrayList<String>();
nameList.add("Priya");
nameList.add("Pooja");
nameList.add("Sneha");
nameList.add("Ritesh");
nameList.add("Nikita");
Map<Integer, String> map = new HashMap<Integer, String>();
for(int i = 0; i < idList.size(); i++) {
map.put(idList.get(i), nameList.get(i));
}
Collection.sort(idList);
nameList.clear();
for(int i = 0; i < map.size(); i++) {
nameList.add(map.get(idList.get(i)));
}
}
公共A类{
公共静态void main(字符串[]args){
List idList=new ArrayList();
添加(5);
添加(2);
添加(4);
添加(1);
添加(3);
列表名称列表=新的ArrayList();
姓名列表。添加(“Priya”);
姓名列表。添加(“Pooja”);
姓名列表。添加(“Sneha”);
姓名列表。添加(“Ritesh”);
姓名列表。添加(“Nikita”);
Map Map=newhashmap();
for(int i=0;i
无需新列表进行排序。由于它们已映射,因此可以直接使用
public class A {
public static void main(String[] args) {
List<Integer> idList = new ArrayList<Integer>();
idList.add(5);
idList.add(2);
idList.add(4);
idList.add(1);
idList.add(3);
List<String> nameList = new ArrayList<String>();
nameList.add("Priya");
nameList.add("Pooja");
nameList.add("Sneha");
nameList.add("Ritesh");
nameList.add("Nikita");
Map<Integer, String> map = new HashMap<Integer, String>();
for(int i = 0; i < idList.size(); i++) {
map.put(idList.get(i), nameList.get(i));
}
Collection.sort(idList);
nameList.clear();
for(int i = 0; i < map.size(); i++) {
nameList.add(map.get(idList.get(i)));
}
}
公共A类{
公共静态void main(字符串[]args){
List idList=new ArrayList();
添加(5);
添加(2);
添加(4);
添加(1);
添加(3);
列表名称列表=新的ArrayList();
姓名列表。添加(“Priya”);
姓名列表。添加(“Pooja”);
姓名列表。添加(“Sneha”);
姓名列表。添加(“Ritesh”);
姓名列表。添加(“Nikita”);
Map Map=newhashmap();
for(int i=0;i
us