排序方法列表

时间:2017-08-15 13:01:08

标签: java sorting reflection collections

我有一个列表,其中包含我的POJO类的所有setter。

public static void main(String[] args) throws Exception {

    Method[] publicMethods = SampleClass.class.getMethods();
    List<Method> setters = new ArrayList<>();

    for (Method method : publicMethods){
        if (method.getName().startsWith("set") && method.getParameterCount() == 1) {
            setters.add(method);
        }
    }
}

不保证方法列表的文档顺序。 我的问题是我如何按字母顺序排列我的制定者名单?

2 个答案:

答案 0 :(得分:2)

您需要自定义comparator

Collections.sort(setters, new Comparator<Method> {
  @Override
  public int compare(Method a, Method b) {
    return a.getName().compareTo(b.getName());
  }
});

答案 1 :(得分:0)

你可以用java8这样做:

List<Method> setters = Arrays.asList( SampleClass.class.getMethods() )
.stream()
.filter(
  e->e.getName().startsWith("set")
).sorted(
  (a, b)->
        a.getName()
        .compareTo(b.getName())
).collect(Collectors.toList())