排序
/*
* 排序现在只考虑List集合
* java.util.Collection 提供了操作集合的很多工具性质的方法
* sort()方法,就可以将List集合中的数据进行自然排序(升序)
* */
public class SortListDemo {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
Random ran = new Random();
for (int i = 0;i < 10; i++){
list.add(ran.nextInt(100));
}
System.out.println(list);
Collections.sort(list);
System.out.println(list);
}
}
- java.util.Collection 提供了操作集合的很多工具性质的方法
- sort()方法,就可以将List集合中的数据进行自然排序(升序)
勾股定理
A²+B²的和再开方
开方 5²+8² 就可以求出 顶点到0点的距离
自定义排序
/**
* 自定义排序
*/
public class SortListDemo2 {
public static void main(String[] args) {
List<Point> list = new ArrayList<>();
list.add(new Point(5,6));
list.add(new Point(7,3));
list.add(new Point(6,3));
list.add(new Point(9,1));
list.add(new Point(3,5));
System.out.println(list);
/*
* Collection类中的sort方法
* 要求排序的集合泛型类型必须实现comparable接口并重写规定中的方法
* 否则编译错误
*
* 由于编写这个方法会造成代码出现额外的耦合性
* 排序规则代码入侵到Point类中,所以不推荐
* 不利于代码维护
* */
/*
使用比较器
*java.util.Comparator接口
在Collection类的sort方法还有另一个重载,允许在集合后加一个比较器类型的参数
*/
Comparator<Point> com = new Comparator<Point>() {
@Override
public int compare(Point p1, Point p2) {
/**
* int返回值具体数值不重要只关注是正数,负数,还是0
* 正数:表示p1>p2
* 负数:表示p2>p1
* 0相等
*/
int l1 = p1.getX()*p1.getY()+p1.getY()*p1.getY();
int l2 = p2.getX()*p2.getX()+p2.getY()*p2.getY();
return l1-l2;
}
};
Collections.sort(list,com);
System.out.println(list);
}
}
- 按照顶点到原点的距离大小进行升序排列
- 降序排列return l2-l1
按照字数多少进行排序
public class Collection {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("卡卡西");
list.add("凯");
list.add("我爱罗");
list.add("香琳");
list.add("大筒木辉夜");
System.out.println(list);
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length()-o2.length();
}
});
System.out.println(list);
}
}