在工作中已经开始跌跌撞撞的java搬砖了,第一个java项目正在上手中,随时记录一下碰到的问题吧
本次遇到的问题是:根据某个属性对数据进行排序,简单举例:所有学生考了4门,使用其中一门考试成绩进行排序。
用php来说呢,就是二维数组的排序,实现方式就是array_column把指定key全取出来,然后使用array_multisort进行排序。
那么java里应该怎么实现呢?
二、JSONObject能排序么
目前程序中多用的JSONObject这种数据格式,那么是否可以直接排序,答案是不能的。原因呢,JSONObject内部是使用hashmap进行存储的,是无序的。
三、实现思路
首先要先转化为List集合,然后重写下Comparator比较器的,从而实现想要的排序规则。
四、代码
首先定义了个对象Stock.java
package com.example.demo.controller; public class Stock { private float price; private String stock; private float profit; public Stock() { } public Stock(float price, String stock, float profit) { this.price = price; this.stock = stock; this.profit = profit; } public String getStock() { return stock; } public void setStock(String stock) { this.stock = stock; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } public float getProfit() { return profit; } public void setProfit(float profit) { this.profit = profit; } } 复制代码
排序部分,先插入示例数据,转为集合,然后根据其中profit的字段进行排序
JSONArray stockList = new JSONArray(); JSONObject item = new JSONObject(); item.put("price", 20); item.put("profit", 3); item.put("stock", "300003"); stockList.add(0, item); JSONObject item1 = new JSONObject(); item1.put("price", 30); item1.put("profit", 4); item1.put("stock", "300002"); stockList.add(1, item1); JSONObject item2 = new JSONObject(); item2.put("price", 10); item2.put("profit", 4); item2.put("stock", "300004"); stockList.add(2, item2); JSONObject item3 = new JSONObject(); item3.put("price", 20); item3.put("profit", 6); item3.put("stock", "300005"); stockList.add(3, item3); List<Stock> stockDataList = JSONObject.parseArray(stockList.toJSONString(), Stock.class); Collections.sort(stockDataList, new Comparator<Stock>() { public int compare(Stock o1, Stock o2) { double i1 = 0; double i2 = 0; i1 = o1.getProfit(); i2 = o2.getProfit(); if (i1 < i2) { return 1; } if (i1 == i2) { return 0; } return -1; } }); 复制代码
结果:可以看到数据已经根据profit进行排序了

五、调试方法
之前写php的时候常用的调试就是var_dump();+exit();,那么在java中应该怎么进行调试呢?
先在右上角找到Debug 的按钮,把程序启动起来,在需要调试的位置的行数旁边点一下,就可以了。

六、后记
虽然排序看起来比较简单,正所谓会者不难,慢慢在实践中将每个小的问题都解决,这就是java小白的成长吧~
原文
https://juejin.im/post/5eeefb9651882565d74fb4c2
本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » java小白的成长记录之数据排序