Java如何调整一个对象集合(ArrayList)中某一项在集合中的顺序

分类:计算机 | Java | 集合 41
更新:2021-11-05 01:42:42
编辑

1 说明

假如有一个对象集合userList,其中集合元素的类型是User类:

public class User{
  private String name;
  private int age;

  ......
}
List<User> userList=new ArrayList<>();
User user1=new User('张三',21);
User user2=new User('李四',22);
User user3=new User('王五',23);

userList.add(user1);
userList.add(user2);
userList.add(user3);

如果我们想把“王五”的顺序调整为第一个,应该怎么做呢?

2 方法1——直接按照已知的顺序调整

目前我们知道userList集合中3个用户的顺序,张三是0,李四是1,王五是2,那么可以通过如下代码调整“王五”的顺序:

User user=userList.get(2);
userList.remove(2); //先将“王五”这个元素删除
userList.add(0,user); //将刚才取出的“王五”放到第0的位置

上面代码可以简写为:

userList.add(0,userList.remove(2));

3 方法2——如果元素顺序不确定,可以通过属性name先查到“王五”这个对象,然后调整其顺序

List<User> userListSelect =userList.stream().filter(a-> a.getName().equals("王五")).collect(Collectors.toList());
if(userListSelect!=null&&userListSelect.size()>0){
    User userNew=userListSelect.get(0); //先查出要调整顺序的集合元素
    userList.remove(userListSelect.get(0)); //先将王五从集合中移除

    userList.add(0,userNew); //将王五添加到集合中指定的位置
}