Java:对ArrayList进行排序<;MyObject>;基于MyObject变量
可能重复:Java:对ArrayList进行排序<;MyObject>;基于MyObject变量,java,sorting,arraylist,Java,Sorting,Arraylist,可能重复: 给你一个简短的问题: 我有一个ArrayList中填充了MyObject对象。我希望根据整数变量MyObject对它们进行排序 是否有现成的方法来实现这一点,或者我必须自己编写快速排序/合并排序 谢谢你抽出时间, Dimitris如果您想查看比较器,它们可以让您以任何方式定义排序顺序。这是您想查看比较器的文档,它们允许您以任何方式定义排序顺序。这是您可以使用数组的文档。sort(…)您必须只为MyObject实现一个比较器,或者使其具有可比性您可以使用数组。sort(…)您必须仅
给你一个简短的问题: 我有一个
ArrayList
中填充了MyObject
对象。我希望根据整数变量MyObject
对它们进行排序
是否有现成的方法来实现这一点,或者我必须自己编写快速排序/合并排序
谢谢你抽出时间,
Dimitris如果您想查看比较器,它们可以让您以任何方式定义排序顺序。这是您想查看比较器的文档,它们允许您以任何方式定义排序顺序。这是您可以使用
数组的文档。sort(…)
您必须只为MyObject
实现一个比较器
,或者使其具有可比性您可以使用数组。sort(…)
您必须仅为您的MyObject
实现一个比较器
,或使其具有可比性,您需要实现可比接口并覆盖比较器。
在下面的示例中,我假设有一个成员变量“name”,您将在该变量上比较对象
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class MyObject implements Comparable<MyObject>{
private String name;
private int id;
public String getName() {
return name;
}
public MyObject(String name, int id) {
super();
this.name = name;
this.id = id;
}
@Override
public int compareTo(MyObject o) {
return name.compareTo(o.getName());
}
@Override
public String toString() {
return name+"\t"+id+"\n";
}
}
public class Test {
public static void main(String[] args) {
List<MyObject> list = new ArrayList<MyObject>();
list.add(new MyObject("John", 10));
list.add(new MyObject("Mark", 11));
list.add(new MyObject("Steve", 9));
Collections.sort(list);
System.out.println("Sorted list is :"+list);
}
}
import java.util.ArrayList;
导入java.util.Collections;
导入java.util.List;
类MyObject实现了可比较的{
私有字符串名称;
私有int-id;
公共字符串getName(){
返回名称;
}
公共MyObject(字符串名称,int-id){
超级();
this.name=名称;
this.id=id;
}
@凌驾
公共内部比较(MyObject o){
返回name.compareTo(o.getName());
}
@凌驾
公共字符串toString(){
返回名称+“\t”+id+“\n”;
}
}
公开课考试{
公共静态void main(字符串[]args){
列表=新的ArrayList();
添加(新的MyObject(“John”,10));
添加(新的MyObject(“Mark”,11));
添加(新的MyObject(“Steve”,9));
集合。排序(列表);
System.out.println(“排序列表为:“+list”);
}
}
您需要实现可比接口并覆盖compareTo。
在下面的示例中,我假设有一个成员变量“name”,您将在该变量上比较对象
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class MyObject implements Comparable<MyObject>{
private String name;
private int id;
public String getName() {
return name;
}
public MyObject(String name, int id) {
super();
this.name = name;
this.id = id;
}
@Override
public int compareTo(MyObject o) {
return name.compareTo(o.getName());
}
@Override
public String toString() {
return name+"\t"+id+"\n";
}
}
public class Test {
public static void main(String[] args) {
List<MyObject> list = new ArrayList<MyObject>();
list.add(new MyObject("John", 10));
list.add(new MyObject("Mark", 11));
list.add(new MyObject("Steve", 9));
Collections.sort(list);
System.out.println("Sorted list is :"+list);
}
}
import java.util.ArrayList;
导入java.util.Collections;
导入java.util.List;
类MyObject实现了可比较的{
私有字符串名称;
私有int-id;
公共字符串getName(){
返回名称;
}
公共MyObject(字符串名称,int-id){
超级();
this.name=名称;
this.id=id;
}
@凌驾
公共内部比较(MyObject o){
返回name.compareTo(o.getName());
}
@凌驾
公共字符串toString(){
返回名称+“\t”+id+“\n”;
}
}
公开课考试{
公共静态void main(字符串[]args){
列表=新的ArrayList();
添加(新的MyObject(“John”,10));
添加(新的MyObject(“Mark”,11));
添加(新的MyObject(“Steve”,9));
集合。排序(列表);
System.out.println(“排序列表为:“+list”);
}
}
您还可以使用集合.sort()
库并传入您的集合(ArrayList
)和专门为您的对象设计的Comperator
http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html[enter link description here][1]
您还可以使用
Collections.sort()
库并传入您的集合(ArrayList
)和专门为您的对象设计的Comperator
http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html[enter link description here][1]
好的,在这里发布你的“myobject”的结构@arbit它是一个基本的
类myobject{private int num;/*构造函数,setter和getter for num*/}
,朋友。好的,在这里发布你的“myobject”的结构@arbit它是一个基本的类myobject{private int num;/*构造函数,setter和getter for num here*/}
,朋友。谢谢你,朋友。就像我想的那么简单谢谢你,朋友。这和我想的一样简单。