博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CollectionsDemo1+2 List集合普通元素的排序,自定义类型的排序
阅读量:4318 次
发布时间:2019-06-06

本文共 4080 字,大约阅读时间需要 13 分钟。

CollectionsDemo1 List集合普通元素的排序,自然排序

/** * List集合的排序 * 排序List集合使用集合的工具类Collections的静态方法sort, * 该方法可以对指定List集合进行自然排序(从小到大) */public class SortDemo1 {    public static void main(String[] args) {        //1,生成一个List
集合 List
list = new ArrayList
(); //2.为集合添加随机10个随机整数,作为元素 Random rand = new Random(); for(int i=0;i<10;i++){ list.add(rand.nextInt(100)); } //3.输出集合,查看list内的元素 System.out.println(list); //[90, 71, 17, 57, 90, 69, 48, 82, 31, 41] //4.对集合进行排序,用Collections类的静态方法之一 sort Collections.sort(list); //5.输出集合,查看list内的元素 System.out.println(list); //[12, 12, 20, 27, 33, 58, 60, 66, 70, 71] //6.针对总结2进行测试,排序字符串 List
strList = new ArrayList
(); strList.add("Mary"); strList.add("Lee"); strList.add("Varen"); strList.add("Garen"); strList.add("爸爸"); strList.add("维恩"); strList.add("阿满"); strList.add("成吉思汗在北京"); strList.add("成吉思汗"); //7.输出结果 System.out.println(strList); Collections.sort(strList); System.out.println(strList); /* * [Mary, Lee, Varen, Garen, 爸爸, 维恩, 阿满, 成吉思汗在北京, 成吉思汗] [Garen, Lee, Mary, Varen, 成吉思汗, 成吉思汗在北京, 爸爸, 维恩, 阿满] */ //8.针对总结3,测试自定义元素能否用次方法排序 List
pointList = new ArrayList
(); pointList.add(new Point(3,7)); pointList.add(new Point(3,5)); pointList.add(new Point(5,2)); pointList.add(new Point(4,3));// Collections.sort(pointList); 编译出错 } /** * 总结 * 1.只能根据Collections.sort方法的自然顺序排序,只能由小到大排序. * 2.想要排序的不是数值能排序么?按照什么顺序排序呢? * 测试结论:字符串也能排序,根据英文字母的ascii值,由小到大.中文则无规律. * 3.对自定义的类型元素,能排序么? * 测试结论:Collections.sort(pointList);编译报错. * 说明单独使用这个方法没法对自定义类型元素进行排序,需要另寻求解决办法 */}

CollectionsDemo2 List 自定义类型元素的排序

/** *    自定义类型元素的排序,用Collections的静态方法sort怎么实现呢? *    注意:这里首先自定义个类(Point),才能实验下面这个Demo *    关键点: 使用Comparator接口实现对集合中的元素排序 *     总结:     1.排序自定义元素的方法,用Collections.sort可以实现.     前提是,需要实现Comparator接口并实现compareTo方法,定义比较规则.     2.但是,有一点弊端,就是为了实现Collections.sort方法,需要在我们     自己的类中定义其他的方法,"侵入性"太强,有没有更好的解决办法呢?     */public class CollectionsDemo2 {    public static void main(String[] args) {        //1.建立自定义元素的集合List        List
list = new ArrayList
(); //2.在集合中添加Point类型的对象 list.add(new Point(8,3)); list.add(new Point(10,9)); list.add(new Point(5,6)); list.add(new Point(2,3)); list.add(new Point(1,5)); System.out.println(list); //输出未排序结果// [Point [x=8, y=3], Point [x=10, y=9], Point [x=5, y=6], Point [x=2, y=3], Point [x=1, y=5]] //3.我们知道,用Collections.sort(list)进行排序,会报错 /*关键点: 使用Comparator接口实现对集合中的元素排序 首先Point类需要实现Comparator接口,并实现其compareTo的抽象方法. 这里需要注意, Compartor
接口也是可以指定泛型的.一般定义成跟类同类型. compareTo(指定对象)方法 返回值int 返回值>0 这个对象大于指定对象 返回值<0 这个对象小于指定对象 返回值=0 这个对象等于指定对象 */ Collections.sort(list); //再Point类重写compareTo方法后,Collections.sort编译通过// [Point [x=2, y=3], Point [x=1, y=5], Point [x=5, y=6], Point [x=8, y=3], Point [x=10, y=9]] System.out.println(list); //输出排序后结果 }}

实验用Point类

public class Point implements Comparable
{ private int x; private int y; public Point(int x, int y) { super(); this.x = x; this.y = y; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } @Override public String toString() { return "Point [x=" + x + ", y=" + y + "]"; } @Override public int compareTo(Point o) { /* * 坐标点的比大小,比该点到远点的距离,即比两个坐标点 x*x+y*y 的大小 * */ int tLeng = this.x*this.x + this.y*this.y; int oLeng = o.x*o.x + o.y*o.y; return tLeng - oLeng; }}
View Code

 

转载于:https://www.cnblogs.com/zyjcxc/p/5448765.html

你可能感兴趣的文章
搜索mysql语句优化_Mysql查询语句优化
查看>>
mysql redhat rmp_MySQL在linux上的rpm包方式安装方法
查看>>
hibernate mysql demo_hibernate简单的demo
查看>>
python mysql 执行sql文件_mysql数据库怎么执行sql脚本
查看>>
mysql左右union_MYSQL:union, 左连接
查看>>
tkinter print 输出到文本框_tkinter 模块(一)
查看>>
分辨率像素英寸和像素厘米的区别_监控摄像机像素和分辨率介绍
查看>>
apache mysql php配置_apache安装和mysql php配置问题
查看>>
java 导入其他包_java - 如何从默认包导入类
查看>>
嵌入式和java哪个难学_嵌入式和java哪个前景好
查看>>
java即时通讯 开源_im即时通讯开源
查看>>
kettle java交互_通过Java调取Kettle的结果集
查看>>
mysql 导致iis 假死_解决IIS无响应假死状态
查看>>
mysql数据库读取快照隔离_CookBook/1-MySQL数据库读写锁示例详解、事务隔离级别示例详解.md at master · cuiko/CookBook · GitHub...
查看>>
skinme java 路径错误_java 错误 classes路径配置错误
查看>>
python安装tensorflow gpu_[tensorflow] tensorflow-cpu/gpu 安装过程
查看>>
java二维数组矩阵_获取从二维数组矩阵的行和列在Java中
查看>>
scala mysql连接池_Scala 操作Redis使用连接池工具类RedisUtil
查看>>
css背景图片高斯模糊_CSS3 filter(滤镜) 制作图片高斯模糊无需JS
查看>>
matlab综合实验题库,数学实验matlab题库答案
查看>>