加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

基于java中的不同数据成员对对象列表进行排序

发布时间:2020-12-15 04:57:36 所属栏目:Java 来源:网络整理
导读:我有这门课: public class Friend {private String name;private String location;private String temp;private String humidity;public String getTemp() { return temp;}public void setTemp(String temp) { this.temp = temp;}public String getHumidity
我有这门课:

public class Friend {

private String name;
private String location;
private String temp;
private String humidity;

public String getTemp() {
    return temp;
}

public void setTemp(String temp) {
    this.temp = temp;
}

public String getHumidity() {
    return humidity;
}

public void setHumidity(String humidity) {
    this.humidity = humidity;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}


public String getLocation() {
    return location;
}

public void setLocation(String location) {
    this.location = location;
}
}

我想根据用户输入根据名称,位置,温度和湿度对List进行排序.
?编辑:用户指定必须由哪个数据成员进行排序.
?最简单的方法是什么?
?谢谢.

解决方法

Java有一个名为 Collections.sort(List,Comparator)的静态函数,它在给定自定义比较器的情况下对一个(通用的)对象列表进行排序,给定两个相同类型的对象,确定哪一个在另一个之前排序.

您的任务是编写一个函数,该函数创建一个Comparator,它根据参数和用户指定的排序顺序对对象进行排序.例如:

public Comparator<Friend> getComparator(final String sortBy) {
  if ("name".equals(sortBy)) {
    return new Comparator<Friend>() {
      @Override int compare(Friend f1,Friend f2) 
        return f1.getName().compareTo(f2.getName());
      }
    };
  } else if ("location".equals(sortBy)) {
    return new Comparator<Friend>() {
      @Override int compare(Friend f1,Friend f2) 
        return f1.getLocation().compareTo(f2.getLocation());
      }
    };
  } else if ("temp".equals(sortBy)) {
    // ...
  } else {
    throw new IllegalArgumentException("invalid sort field '" + sortBy + "'");
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读