排序

  1. LinkedList<String> staff = new LinkedList<>();
  2. // 填充List
  3. // 用salary 字段排序
  4. staff.sort(Comparator.comparingDouble(Employee::getSalary));
  5. // 按salary 降序排序
  6. staff.sort(Comparator.comparingDouble(Employee::getSalary).reversed());
  7. // 按自然顺序的降序排序
  8. staff.sort(Comparator.reverseOrder());

image.png
image.png

二分查找

Collections 的静态方法 binarySearch 用于从排好序的 List 中查找指定元素。如果 List 中的排序不是按照 自然顺序排序(用 Comparable 接口的 compareTo 方法进行排序),那么还需要提供一个 Comparator。

  1. // 参数 c 是一个 List 对象,element 是要找的元素
  2. i = Collections.binarySearch(c, element);
  3. i = Collections.binarySearch(c, element, comparator);

binarySearch 方法如果找到了指定的元素,就返回那个元素的索引;如果没找到,就返回一个负数,根据这个负数,可以将元素添加到正确的排序位置上:

  1. if(i < 0)
  2. c.add(-i - 1, element); // -i-1 就是被查找的那个元素在 List 中的排序位置

image.png

简单算法

image.png