在工作中已经开始跌跌撞撞的java搬砖了,第一个java项目正在上手中,随时记录一下碰到的问题吧
本次遇到的问题是:根据某个属性对数据进行排序,简单举例:所有学生考了4门,使用其中一门考试成绩进行排序。
用php来说呢,就是二维数组的排序,实现方式就是array_column把指定key全取出来,然后使用array_multisort进行排序。
那么java里应该怎么实现呢?
目前程序中多用的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小白的成长吧~