public class ListOrder {public static void main(String[] args) {List<String> list = Arrays.asList("B2C", "O2O", "A");List<User> targetList = new ArrayList<User>();User user1 = new User();user1.setId("1");user1.setName("B2C");user1.setAge(10);User user2 = new User();user2.setId("2");user2.setName("O2O");user2.setAge(18);User user3 = new User();user3.setId("3");user3.setName("A");user3.setAge(38);User user4 = new User();user4.setId("4");user4.setName("AA");user4.setAge(50);targetList.add(user1);targetList.add(user2);targetList.add(user3);targetList.add(user4);System.out.println("排列前的數據:");targetList.forEach(t -> System.out.print(t.getName() + "~" + t.getAge() + " "));System.out.println();// 排序setListOrder(list, targetList);System.out.println("排序的規則:");list.forEach(t -> System.out.print(t + " "));System.out.println();System.out.println("排列后的數據:");targetList.forEach(t -> System.out.print(t.getName() + "~" + t.getAge() + " "));}
public static void setListOrder(List<String> orderRegulation, List<FruitLongAnChannelAndGrandRespVo> targetList) {// 按照 list 里的 name 來排序 targetListCollections.sort(targetList, ((o1, o2) -> {int io1 = orderRegulation.indexOf(o1.getName());int io2 = orderRegulation.indexOf(o2.getName());if (io1 != -1) {io1 = targetList.size() - io1;}if (io2 != -1) {io2 = targetList.size() - io2;}return io2 - io1;}));}
注意:
該排序適用于數據內容一致(類型一致),順序不相同的情況。 targetList中多出來的數據,排在新的List數組的最后。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态