Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:我有一个汽车列表,我想按列表中一个元素内的registrationNumber(字符串)进行排序_Java_List_Sorting_Collections - Fatal编程技术网

Java:我有一个汽车列表,我想按列表中一个元素内的registrationNumber(字符串)进行排序

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,在该方法中,您将编写逻辑,您希

我在java中有一个ist,里面有car对象,其中一个car对象里面有一个名为RegistrationNumber的字符串,我想按它对列表进行排序 List cars=new ArrayList()

public Collection sortedbyregistration number()分类{
}

嗨,有两种方法

  • 使用Compariable接口:在这种情况下,您的bean本身将使用一个名为Compariable的接口来实现,并重写一个方法Comparieto,在该方法中,您将编写逻辑,您希望在案例注册号中比较类。问题是,将来您是否希望在我们假设make的基础上进行排序一年或其他任何你不能做的事

    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.

    嗨,有两种方法

  • 使用Compariable接口:在这种情况下,您的bean本身将使用一个名为Compariable的接口来实现,并重写一个方法Comparieto,在该方法中,您将编写逻辑,您希望在案例注册号中比较类。问题是,将来您是否希望在我们假设make的基础上进行排序一年或其他任何你不能做的事

    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.

    公共收集分类登记号(列出车辆){
    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())
        }
    });
    }