ArrayList里的对象按照属性排序,arraylist对象排序
分享于 点击 9839 次 点评:196
ArrayList里的对象按照属性排序,arraylist对象排序
前天被面试问到在集合里的对象按照某个关键字去排序的问题,当时想到了两个解决方案。
今天在朋友建议下参考了API文档,发现原来Collections有静态方法sort去定义对象属性排序,解决方案如下:
//创建一个 User对象
class User
{
int id;
String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class SortTest {
public static void main(String args[])
{
//初始化一个list列表
List<User> list = new ArrayList<User>();
//初始化20个User对象,id随机
for(int i = 0;i < 10;i ++)
{
User user = new User();
user.setId((int)(Math.random() * 100));
user.setName("micro");
list.add(user);
}
//打印出
for(User user : list)
{
System.out.println("User的id:"+user.getId()+" User的name : "+user.getName());
}
//按照id去排序
Collections.sort(list, new Comparator<User>() {
@Override
public int compare(User user1, User user2) {
// TODO Auto-generated method stub
//定义比较大小
if(user1.getId() > user2.getId())
{
return 1;
}
else if(user1.getId() == user2.getId())
{
return 0;
}
else
{
return -1;
}
}
});
System.out.println("排序结束");
//排序结束再输出
for(User user : list)
{
System.out.println("User的id:"+user.getId()+" User的name : "+user.getName());
}
}
}
运行结果:
User的id:69 User的name : micro
User的id:24 User的name : micro
User的id:87 User的name : micro
User的id:3 User的name : micro
User的id:81 User的name : micro
User的id:8 User的name : micro
User的id:0 User的name : micro
User的id:10 User的name : micro
User的id:82 User的name : micro
User的id:75 User的name : micro
排序结束
User的id:0 User的name : micro
User的id:3 User的name : micro
User的id:8 User的name : micro
User的id:10 User的name : micro
User的id:24 User的name : micro
User的id:69 User的name : micro
User的id:75 User的name : micro
User的id:81 User的name : micro
User的id:82 User的name : micro
User的id:87 User的name : micro
如果降序排序修改为:
Collections.sort(list, new Comparator<User>() {
@Override
public int compare(User user1, User user2) {
// TODO Auto-generated method stub
//定义比较大小
if(user1.getId() > user2.getId())
{
return 1;
}
else if(user1.getId() == user2.getId())
{
return 0;
}
else
{
return -1;
}
}
});
运行结果:
User的id:36 User的name : micro
User的id:80 User的name : micro
User的id:13 User的name : micro
User的id:19 User的name : micro
User的id:31 User的name : micro
User的id:5 User的name : micro
User的id:60 User的name : micro
User的id:26 User的name : micro
User的id:78 User的name : micro
User的id:29 User的name : micro
排序结束
User的id:80 User的name : micro
User的id:78 User的name : micro
User的id:60 User的name : micro
User的id:36 User的name : micro
User的id:31 User的name : micro
User的id:29 User的name : micro
User的id:26 User的name : micro
User的id:19 User的name : micro
User的id:13 User的name : micro
User的id:5 User的name : micro
相关文章
- 暂无相关文章
用户点评