2016-10-11 6 views
-4

У меня есть массив объектов, который содержит несколько полей. У меня есть класс с конструкторами, сеттерами и геттерами. Одно из полей - это имя. Я хочу сортировать в алфавитном порядке все имена в массиве и перечислить их. Может ли кто-нибудь помочь? Это в java.Как отсортировать массив объектов alphabeticaclly по определенному полю

Thanks

+0

Возможно. На каком языке? О каких вещах мы говорим? –

+0

Прежде всего: на каком языке вы кодируете? Во-вторых: Поместите некоторый код с вашей попыткой. Таким образом мы можем вам помочь. [Как задать вопросы] (http://stackoverflow.com/help/how-to-ask) – Roy123

+1

На сколько разных языков и сколько возможных типов массивов/объектов вам понравится ваш ответ ...? – deceze

ответ

0

Вы можете сделать это с помощью интерфейса Comparable. Давайте предположим, у нас есть класс автомобиля, который может быть определенной марки (название в данном примере)

public class Car implements Comparable<Car> { 


    private String name; 
    private String color; 

    /** 
    * Names 
    */ 
    public enum Name { 

     FIAT("fiat"), RENAULT("renault"), HONDA("honda"); 

     private final String name;  

     private Name(final String name) { 
      this.name = name; 
     } 

     public String toString() { 
      return this.name; 
     } 
    } 

    /** 
    * Colors 
    */ 
    public enum Colors { 

     BLUE("blue"), RED("red"), YELLOW("yellow"); 

     private final String color;  

     private Colors(final String color) { 
      this.color = color; 
     } 

     public String toString() { 
      return this.color; 
     } 
    } 

    /** 
    * Construct car with name and color 
    * @param name 
    * @param color 
    */ 
    public Car(Name name, Colors color) { 
     this.name = name.toString(); 
     this.color = color.toString(); 
    } 

    /** 
    * return name 
    * @return 
    */ 
    public String getName() { 
     return this.name; 
    } 

    /** 
    * compare to other car 
    */ 
    @Override 
    public int compareTo(Car car2) { 
     return this.name.compareTo(car2.getName()); 
    } 
} 

И главное:

import java.util.Arrays; 

public class Main { 

    //private static List<Car> cars = new ArrayList<Car>(); 
    private static Car[] cars = new Car[3]; 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 

     System.out.println("Create cars in array"); 
     cars[0] = new Car(Car.Name.RENAULT, Car.Colors.YELLOW); 
     cars[1] = new Car(Car.Name.HONDA, Car.Colors.BLUE); 
     cars[2] = new Car(Car.Name.FIAT, Car.Colors.RED); 

//  System.out.println("Create cars in arraylist");  
//  cars.add(new Car(Car.Name.RENAULT, Car.Colors.YELLOW)); 
//  cars.add(new Car(Car.Name.HONDA, Car.Colors.BLUE)); 
//  cars.add(new Car(Car.Name.FIAT, Car.Colors.RED)); 

     System.out.println("Print cars"); 
     for (Car car : cars) { 
      System.out.println("Car name: "+car.getName()); 
     } 

     // sort cars, see Car class 
     Arrays.sort(cars); 

     System.out.println("Print cars after sort"); 
     for (Car car : cars) { 
      System.out.println("Car name: "+car.getName()); 
     } 
    } 
} 

См консоль для вывода.

+0

Я не понимаю, мои объекты хранятся в массиве: фильмы [] movieArr = новые фильмы [0]; – Alex

Смежные вопросы