java - 更改一个数组列表项相对于另一个的顺序
问题描述
我有 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] 进行排序
解决方案
我建议将您的数据封装在一个新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 Comparable
在Passenger
类中,并在方法中定义行为compareTo(Passenger p)
。一旦根据您的喜好定义,排序可以通过调用Collections.sort(passengers);
推荐阅读
- c - 一个函数的返回值正常工作,第二个函数的返回值不反映正确的值
- python - 如何更改仅一个子图周围的颜色?
- azure - 使用 Azure 服务总线实现扇出模式的最佳方式
- c++ - 递归函数错误:“-var-create:无法创建变量对象”
- java - 如何编写测试用例?
- javascript - 在角度 AoT 编译器中导出变量
- python - 通过 boto3 担任 IAM 用户角色时访问被拒绝
- asp.net-mvc - 如果表单无效或为空,则禁用复选框,如果有效则启用
- ios - 在 UIScrollView 中显示多个 UIView 的小缩略图/镜像
- azure - 获取 API 范围策略 XML