Java:我有一个汽车列表,我想按列表中一个元素内的registrationNumber(字符串)进行排序
我在java中有一个ist,里面有car对象,其中一个car对象里面有一个名为RegistrationNumber的字符串,我想按它对列表进行排序 List cars=new ArrayList()Java:我有一个汽车列表,我想按列表中一个元素内的registrationNumber(字符串)进行排序,java,list,sorting,collections,Java,List,Sorting,Collections,我在java中有一个ist,里面有car对象,其中一个car对象里面有一个名为RegistrationNumber的字符串,我想按它对列表进行排序 List cars=new ArrayList() public Collection sortedbyregistration number()分类{ } 嗨,有两种方法 使用Compariable接口:在这种情况下,您的bean本身将使用一个名为Compariable的接口来实现,并重写一个方法Comparieto,在该方法中,您将编写逻辑,您希
public Collection sortedbyregistration number()分类{
}
嗨,有两种方法
public class Car implements Comparable<Car>{
private String regNo;
public Car(String regNo){
super();
this.regNo = regNo;
}
public String getRegNo(){
return regNo;
}
public void setRegNo(String regNo){
this.regNo = regNo;
}
@Override
public int compareTo(Car o){
// Here when we compare if both the variables are equal return 0
if(this.regNo.equals(o.getRegNo())){
return 0;
// If first one is bigger than the latter return 1
}else if(this.regNo.compareTo(o.getRegNo()) > 0){
return 1;
// else return 0
}else{
return -1;
}
}
}
比较级
public class CarComparator implements Comparator<Car2>
{
@Override
public int compare(Car2 o1, Car2 o2)
{
Car2 c1 = (Car2) o1;
Car2 c2 = (Car2) o2;
//TODO check for nulls
if(c1.getRegNo().equals(c2.getRegNo())){
return 0;
}else if(c1.getRegNo().compareTo(c2.getRegNo()) > 0){
return 1;
}else{
return -1;
}
}
}
公共类CarComparator实现Comparator
{
@凌驾
公共整数比较(car2o1,car2o2)
{
car2c1=(Car2)o1;
Car2 c2=(Car2)o2;
//TODO检查空值
如果(c1.getRegNo()等于(c2.getRegNo()){
返回0;
}else如果(c1.getRegNo().compareTo(c2.getRegNo())>0){
返回1;
}否则{
返回-1;
}
}
}
测试
Car2 c1 = new Car2("Z");
Car2 c2 = new Car2("A");
Car2 c3 = new Car2("C");
Car2 c4 = new Car2("B");
List<Car2> list = new ArrayList<>();
list.add(c1);
list.add(c2);
list.add(c3);
list.add(c4);
Collections.sort(list,new CarComparator());
System.out.println(list);
Car2 c1=新的Car2(“Z”);
Car2 c2=新的Car2(“A”);
Car2 c3=新的Car2(“C”);
Car2 c4=新的Car2(“B”);
列表=新的ArrayList();
增加(c1);
增加(c2);
增加(c3);
增加(c4);
Collections.sort(list,new CarComparator());
系统输出打印项次(列表);
2.嗨,有两种方法
public class Car implements Comparable<Car>{
private String regNo;
public Car(String regNo){
super();
this.regNo = regNo;
}
public String getRegNo(){
return regNo;
}
public void setRegNo(String regNo){
this.regNo = regNo;
}
@Override
public int compareTo(Car o){
// Here when we compare if both the variables are equal return 0
if(this.regNo.equals(o.getRegNo())){
return 0;
// If first one is bigger than the latter return 1
}else if(this.regNo.compareTo(o.getRegNo()) > 0){
return 1;
// else return 0
}else{
return -1;
}
}
}
比较级
public class CarComparator implements Comparator<Car2>
{
@Override
public int compare(Car2 o1, Car2 o2)
{
Car2 c1 = (Car2) o1;
Car2 c2 = (Car2) o2;
//TODO check for nulls
if(c1.getRegNo().equals(c2.getRegNo())){
return 0;
}else if(c1.getRegNo().compareTo(c2.getRegNo()) > 0){
return 1;
}else{
return -1;
}
}
}
公共类CarComparator实现Comparator
{
@凌驾
公共整数比较(car2o1,car2o2)
{
car2c1=(Car2)o1;
Car2 c2=(Car2)o2;
//TODO检查空值
如果(c1.getRegNo()等于(c2.getRegNo()){
返回0;
}else如果(c1.getRegNo().compareTo(c2.getRegNo())>0){
返回1;
}否则{
返回-1;
}
}
}
测试
Car2 c1 = new Car2("Z");
Car2 c2 = new Car2("A");
Car2 c3 = new Car2("C");
Car2 c4 = new Car2("B");
List<Car2> list = new ArrayList<>();
list.add(c1);
list.add(c2);
list.add(c3);
list.add(c4);
Collections.sort(list,new CarComparator());
System.out.println(list);
Car2 c1=新的Car2(“Z”);
Car2 c2=新的Car2(“A”);
Car2 c3=新的Car2(“C”);
Car2 c4=新的Car2(“B”);
列表=新的ArrayList();
增加(c1);
增加(c2);
增加(c3);
增加(c4);
Collections.sort(list,new CarComparator());
系统输出打印项次(列表);
公共收集分类登记号(列出车辆){
return Collections.sort(cars,new Comparator(){
@凌驾
公共整数比较(ICar o1,ICar o2){
返回o1.getRegistrationNumber().compareTo(o2.getRegistrationNumber())
}
});
}
或
public Collection sortedbyregistration number()分类{
return Collections.sort(this.cars,new Comparator()){
@凌驾
公共整数比较(ICar o1,ICar o2){
返回o1.getRegistrationNumber().compareTo(o2.getRegistrationNumber())
}
});
}
公共收集分类登记号(列出车辆){
return Collections.sort(cars,new Comparator(){
@凌驾
公共整数比较(ICar o1,ICar o2){
返回o1.getRegistrationNumber().compareTo(o2.getRegistrationNumber())
}
});
}
或
public Collection sortedbyregistration number()分类{
return Collections.sort(this.cars,new Comparator()){
@凌驾
公共整数比较(ICar o1,ICar o2){
返回o1.getRegistrationNumber().compareTo(o2.getRegistrationNumber())
}
});
}
使用集合。排序
并让汽车
实现可比
@SilverNak我认为排序只存在于列表界面内(因为集合可能无序,因此对它们进行排序没有多大意义);)使用Collections.sort
并让Car
实现compariable
@SilverNak我认为sort只存在于列表界面中(因为集合可能无序,因此对它们进行排序没有多大意义);)它是否返回已排序的列表?是。因为注册号是一个字符串,所以它将按字母顺序排序。感谢您的快速响应和帮助。如果我现在需要按数字而不是字符串排序,我将如何进行排序?它是相同的。compare函数将从最低数字到最高数字进行排序。它是否返回已排序的列表?是。因为注册号是一个字符串,所以它将按字母顺序排序。感谢您的快速响应和帮助。如果我现在需要按数字而不是字符串排序,我将如何进行排序?它是相同的。compare函数将从最低到最高数字进行排序
public class CarComparator implements Comparator<Car2>
{
@Override
public int compare(Car2 o1, Car2 o2)
{
Car2 c1 = (Car2) o1;
Car2 c2 = (Car2) o2;
//TODO check for nulls
if(c1.getRegNo().equals(c2.getRegNo())){
return 0;
}else if(c1.getRegNo().compareTo(c2.getRegNo()) > 0){
return 1;
}else{
return -1;
}
}
}
Car2 c1 = new Car2("Z");
Car2 c2 = new Car2("A");
Car2 c3 = new Car2("C");
Car2 c4 = new Car2("B");
List<Car2> list = new ArrayList<>();
list.add(c1);
list.add(c2);
list.add(c3);
list.add(c4);
Collections.sort(list,new CarComparator());
System.out.println(list);
public Collection<ICar> sortedByRegistrationNumber(List<ICar> cars) {
return Collections.sort(cars, new Comparator<ICar>() {
@Override
public int compare(ICar o1, ICar o2) {
return o1.getRegistrationNumber().compareTo(o2.getRegistrationNumber())
}
});
}
public Collection<ICar> sortedByRegistrationNumber() {
return Collections.sort(this.cars, new Comparator<ICar>() {
@Override
public int compare(ICar o1, ICar o2) {
return o1.getRegistrationNumber().compareTo(o2.getRegistrationNumber())
}
});
}