Java排行榜功能

实现java排行榜功能,最主要的使用到数据库的GROUP_CONCAT()函数。

主要涉及到mysql的几个函数:

  • group_concat() 用法,分组查询某一列的所有值,默认以逗号隔开,可以排序,用某个分隔符分隔, group_concat(name orderby id desc separator ‘/’)。

  • left(str,len) 返回具有指定长度len的字符串str的左边部分。

  • location(substr,str) 返回substr字符串在str字符串第一次出现的位置 。

  • concat(str,substr) 连接符,两个字符串相连接。

  • substring_index(str,’,’,len) 在字符串中以逗号或者其他符号为索引,获取不同索引位的字符。

  • 其中主要是group_concat()分组统计函数。

SELECT
	  created_user_id,
	  created_time,
	  SUBJECT,
	  MAX( score ) AS score,
	  SUBSTRING_INDEX(GROUP_CONCAT( use_time ORDER BY score DESC, use_time ASC ),',',1) AS use_time
     FROM
     	exam_record
     WHERE
     	`subject` = '1'
     	AND exam_status = 2
     	AND delete_flag = 0
     GROUP BY
     	created_user_id
     ORDER BY
     	score DESC,
	 use_time ASC
	 LIMIT 100
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现排行榜功能,可以按照以下步骤: 1. 创建一个数据类,用于存储每个参与排行榜的对象的信息,包括名称、分数等。 2. 在程序中创建一个List集合,将所有参与排行榜的对象的信息存储到List集合中。 3. 对List集合进行排序,可以使用Collections.sort()方法,并实现Comparator接口中的compare()方法,根据分数的高低来进行排序。 4. 将排好序的List集合中的信息写入到文件中,可以使用FileOutputStream和ObjectOutputStream类实现。 5. 读取文件中的信息,可以使用FileInputStream和ObjectInputStream类实现,将读取到的信息存储到List集合中。 6. 将List集合中的信息显示在控制台上,或者在GUI中显示。 代码示例: ``` import java.io.*; import java.util.*; public class RankingList { public static void main(String[] args) { List<Player> players = new ArrayList<>(); players.add(new Player("Tom", 90)); players.add(new Player("Jerry", 80)); players.add(new Player("Mike", 70)); players.add(new Player("Bob", 85)); // 按照分数从高到低排序 Collections.sort(players, new Comparator<Player>() { @Override public int compare(Player o1, Player o2) { return o2.getScore() - o1.getScore(); } }); // 将排名信息写入文件 try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("ranking.dat"))) { out.writeObject(players); } catch (IOException e) { e.printStackTrace(); } // 从文件中读取排名信息 try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("ranking.dat"))) { List<Player> rankingList = (List<Player>) in.readObject(); for (int i = 0; i < rankingList.size(); i++) { System.out.println("第" + (i+1) + "名:" + rankingList.get(i)); } } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } } } class Player implements Serializable { private String name; private int score; public Player(String name, int score) { this.name = name; this.score = score; } public String getName() { return name; } public int getScore() { return score; } @Override public String toString() { return "Player{" + "name='" + name + '\'' + ", score=" + score + '}'; } } ``` 运行结果: ``` 第1名:Player{name='Tom', score=90} 第2名:Player{name='Bob', score=85} 第3名:Player{name='Jerry', score=80} 第4名:Player{name='Mike', score=70} ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值