首页 > 解决方案 > 更改一个数组列表项相对于另一个的顺序

问题描述

我有 2 个数组列表

 ArrayList<String> passengerNames= new ArrayList<String>();//stores passenger names
ArrayList<String> seatNumber= new ArrayList<String>();//stores the seat passenger booked 1  seat=1passenger
    passengerNames.add("Ram");
    passengerNames.add("Shyam");
    passengerNames.add("CPS");
    passengerNames.add("John");
    passengerNames.add("Steve");

    seatNumber.add(1);
    seatNumber.add(84);
    seatNumber.add(19);
    seatNumber.add(99);
    seatNumber.add(78);

所以passengerNames 数组将是[Ram, Shyam, CPS, John, Steve] 而seatNumber 数组将是[1, 84, 19, 99, 78] 我想按升序对seatNumber 数组进行排序,但我想更改passengerNames与它一起列出,当座位号按 [1,19,78,84,99] 之类的升序排列时,乘客姓名数组应按 [Ram,CPS,Steve,Shyam,Jhon] 进行排序

标签: javaarrayssortingarraylist

解决方案


我建议将您的数据封装在一个新Passenger对象中并创建一个乘客类型的 ArrayList - 这应该使事情保持整洁和灵活。

public class Passenger {
    private String name;
    private int seatNumber;

    public Passenger(String name, int seatNumber) {
        this.name = name;
        this.seatNumber = seatNumber;
    }
}

...并用于创建乘客 ArrayList

List<Passenger> passengers = new ArrayList<Passenger>(); // build Passenger ArrayList
passengers.add(new Passenger("Ram", 1)); // create new Passenger
passengers.add(new Passenger("Shyam", 84)); // etc...

关于按升序对列表进行排序,一种干净的方法是implement ComparablePassenger类中,并在方法中定义行为compareTo(Passenger p)。一旦根据您的喜好定义,排序可以通过调用Collections.sort(passengers);


推荐阅读