java list compareto_Java,如何使用compareTo对Arraylist进行排序

我试图弄清楚如何使用可比较的方式对ArrayList进行排序,我的代码如下所示:

public class playerComparsion{

public static void main(String[] args){

ArrayList list = new ArrayList();

Player p1 = new Players(1,92,Zlatan);

Player p2 = new Players(2,92,Hazard);

Player p3 = new Players(1,82,Klose);

list.add(p1);

list.add(p2);

list.add(p3);

}

}

class Players implements Comparable{

int position;

String name;

int rating;

public Players(int i, int j, String string) {

this.position=i;

this.rating=j;

this.name=string;

}

public void getRating() {

System.out.println(this.rating);

}

public void getPos() {

System.out.println(this.position);

}

public void getName() {

System.out.println(this.name);

}

@Override

public int compareTo(Object o) {

// TODO Auto-generated method stub

return 0;

}

}

我想根据属性评级对Arraylist进行排序.我想我应该使用compareTo函数,但我不知道怎么会有人帮助我?

解决方法:

通过实现Comparator< Player>而不是让Player实现Comparable,您可以获得更大的灵活性.类.例如:

class PlayerComparatorByRating implements Comparator {

@Override

public int compare(Player o1, Player o2) {

return o1.getRating() - o2.getRating();

}

}

class PlayerComparatorByName implements Comparator {

@Override

public int compare(Player o1, Player o2) {

return o1.getName().compareTo(o2.getName());

}

}

毕竟,玩家有多个领域,很容易想象有时你可能想要以不同的方式订购玩家.这种方法的一大优势是单一责任原则:Player类只做一件事,封装了玩家数据.而不是再增加一个责任(排序),最好将该逻辑移到另一个类中.

您可以将这些比较器与Collections.sort一起使用,例如:

Collections.sort(list, new PlayerComparatorByRating());

System.out.println(list);

Collections.sort(list, new PlayerComparatorByName());

System.out.println(list);

额外提示

你的班级似乎被命名为玩家.最好重命名为Player.

getName,getRating,getPos方法不应返回void并打印结果,而是返回字段值.

为构造函数参数使用更好的名称,例如:

Player(int position, int rating, String name) {

this.position = position;

this.rating = rating;

this.name = name;

}

使用正确类型的列表来存储玩家:

List list = new ArrayList();

请正确格式化您的代码.任何IDE都可以做到这一点.

建议实施

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.List;

class Player {

private int position;

private int rating;

private final String name;

Player(int position, int rating, String name) {

this.position = position;

this.rating = rating;

this.name = name;

}

public int getRating() {

return rating;

}

public int getPos() {

return position;

}

public String getName() {

return name;

}

@Override

public String toString() {

return String.format("%s:%d:%d", name, position, rating);

}

}

class PlayerComparatorByRating implements Comparator {

@Override

public int compare(Player o1, Player o2) {

return o1.getRating() - o2.getRating();

}

}

class PlayerComparatorByName implements Comparator {

@Override

public int compare(Player o1, Player o2) {

return o1.getName().compareTo(o2.getName());

}

}

public class PlayerComparatorDemo {

public static void main(String[] args){

List list = new ArrayList();

Player p1 = new Player(1, 92, "Zlatan");

Player p2 = new Player(2, 92, "Hazard");

Player p3 = new Player(1, 82, "Klose");

list.add(p1);

list.add(p2);

list.add(p3);

Collections.sort(list, new PlayerComparatorByRating());

System.out.println(list);

Collections.sort(list, new PlayerComparatorByName());

System.out.println(list);

}

}

标签:java,comparable,compareto

来源: https://codeday.me/bug/20190713/1454082.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java图片上传(mvc)

最近有开始学起了java,好久没写文章了,好久没来博客园了。最近看了看博客园上次写的图片上传有很多人看&#xff0c;今天在一些篇关于java图片上传的。后台接收用的是mvc。不墨迹了&#xff0c;直接上图。 先看目录结构。idea开发。 一、图片上传还是使用的这款jq插件。前端部署…

appengine_Google AppEngine:任务队列API

appengine任务队列 com.google.appengine.api.taskqueue 使用任务队列&#xff0c;用户可以发起一个请求&#xff0c;以使应用程序执行此请求之外的工作。 它们是进行后台工作的强大工具。 此外&#xff0c;您可以将工作组织成小的离散单元&#xff08;任务&#xff09;。 然后…

python的for语句条件_Python入门基础解答条件判断语句和循环语句的新手使用教程...

无论什么语言都不会缺少条件判断语句和循环语句。我们日常中也有条件判断和循环&#xff0c;条件判断&#xff08;明天如果下雨就不出门&#xff0c;如果晴天就出门。&#xff09;&#xff1b;循环&#xff08;上学朗读课文&#xff0c;老师说&#xff1a;把文章的第几段落读三…

java安全权限_java.security.SecurityPermission

public final class SecurityPermission此类用于安全权限。SecurityPermission 包含一个名称(也称为“目标名称”)&#xff0c;但没有操作列表&#xff1b;可以使用&#xff0c;也可以不使用指定权限。目标名称就是安全配置参数的名称(见下表)。目前 SecurityPermission 对象可…

Android studio Error occurred during initialization of VM 问题解决

最近开发导入其他Android项目遇见的问题,如下图&#xff1a; 解决办法&#xff1a; 将org.gradle.jvmargs的值该为521&#xff08;堆内存分配过高导致&#xff09; 备忘&#xff0c;希望能帮助到大家转载于:https://www.cnblogs.com/yunfang/p/6857096.html

应用程序服务器迁移:从JBoss EE5到Wildfly EE7

几周前&#xff0c;我发布了一个有关从Java EE 5迁移到7的博客 。这主要是关于如何使用新的Java EE 7改进Java EE 5代码。 现在&#xff0c;在本文中&#xff0c;我将对应用程序服务器端的迁移路径进行一些研究。 如果您使用的是Java EE 5&#xff0c;则很有可能正在使用以下服…

滑动窗口限流 java_Spring Boot 的接口限流算法优缺点深度分析

点击上方蓝色字体&#xff0c;选择“标星公众号”优质文章&#xff0c;第一时间送达上一篇&#xff1a;这300G的Java资料是我师傅当年给我的&#xff0c;免费分享给大家(已修复)下一篇&#xff1a;昨天分享资料不小心把百度网盘深处的秘密泄露了(已修复)转自: loubobooo原文&am…

php置顶文章,zblogphp调用置顶文章的教程

有客户建议&#xff0c;侧栏的热门推荐能不能调用置顶类型的文章&#xff0c;因为本站一直未置顶过文章&#xff0c;所以没考虑过这方面&#xff0c;但是既然有需要就得满足啊&#xff0c;是不&#xff1f;于是乎在网站查看教程&#xff0c;别说还真有一篇&#xff0c;信心博客…

通用网页调用本地应用程序方案(windows平台)

一、更新注册表 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\receiveOutOfArg] "URL Protocol""D:\\LongHaibin\\Learn\\Net\\receiveOutOfArg\\receiveOutOfArg\\bin\\Debug\\receiveOutOfArg.exe" "applicationName" [HKEY_CLAS…

php7有没有使用jit,RegEx不适用于长模式PCRE的JIT编译器堆栈限制 – PHP7

PHP 7引入了PCRE的JIT编译器.它可以影响是否/如何在长输入上执行低效的正则表达式.Error 6 PREG_JIT_STACKLIMIT_ERROR重写正则表达式以提高效率,通常是通过删除无关的捕获组或更加小心量词.作为一种解决方法,您可以禁用JIT.所以你可以使用以下解决方案使其工作&#xff1a;in…

mips j指令_MIPS的基本实现

MIPS核心指令集&#xff1a;指令集概括为3个指令类&#xff1a;存储器访问指令类lw&#xff0c;sw等2. 算术逻辑指令类add&#xff0c;sub等3. 转移指令类beg&#xff0c;J等指令的共同性取指令&#xff0c;送PC值给Memory&#xff1b;根据指令内容读取寄存器内容&#xff1b;除…

腾讯管家去除桌面快捷小图标

找了大半天&#xff0c;原来腾讯管家也可以&#xff1a; 废话不多说&#xff0c;动手实践吧。。。。。 打开电脑管家——电脑诊所——桌面图标——【去掉快捷方式小箭头】 就这样轻松的实现了&#xff0c;赶快试试吧&#xff01; 转载于:https://www.cnblogs.com/yjq520/p/6858…

apache shiro_Apache Shiro第3部分–密码学

apache shiro除了保护网页和管理访问权限外&#xff0c; Apache Shiro还执行基本的加密任务。 该框架能够&#xff1a; 加密和解密数据&#xff0c; 哈希数据&#xff0c; 生成随机数。 Shiro没有实现任何加密算法。 所有计算都委托给Java密码学扩展&#xff08;JCE&#xf…

argparse模块_Argparse:一个具体案例教会你python命令行参数解析

问题描述&#xff1a;现有一个用于数据格式转换的py脚本(多转一)&#xff0c;执行时通过命令行传入一系列的参数控制其具体运行方式&#xff0c;使满足以下要求&#xff1a;1. 必须传入需要处理的原始数据文件名2. 可以指定输入文件的格式&#xff0c;若没有指定则使用默认值&a…

Eclipse中src/main/resources配置文件启动问题

项目pom文件有做修改如下的时候&#xff0c;还没有进行mvn clean install 启动test项目中的appcontext会 可以手动清空 然后就可以了。 出现如下问题的原因是 配置文件默认输出到target/classes 下 项目启动默认也会找该目录下的配置文件 其实这里pom文件拷贝配置文件只是用于读…

仍然不安全:变成了Java 9功能的Java 6中的主要错误

sun.misc.Unsafe的未来将如何发展&#xff1f; 随着2015年即将结束&#xff0c;我们认为这将是对Java社区过去一年中最热门辩论之一进行尸检的好机会。 通过查看标题&#xff0c;您中的大多数人可能已经开始在口腔中产生酸味并在肠道中产生愤怒的感觉&#xff0c;但是如果您错…

camvid数据集使用方法_使用PyTorch处理CIFAR10数据集并显示

在训练图像分类的时候&#xff0c;我们通常会使用CIFAR10数据集&#xff0c;今天就先写一下如何展示数据集的图片及预处理。第一部分代码&#xff0c;展示原始图像&#xff1a;import numpy as npimport torch#导入内置cifarfrom torchvision.datasets import cifar#预处理模块…

类型之间的相互转换php,php学习之数据类型之间的转换介绍

复制代码 代码如下:/*数据类型之间相互转换* 一种是强制转换* setType(变量,类型); //int,integer,float,double等等。* 这个函数将原变量的类型改变&#xff0c;用var_dump();可以查看变量** 在赋值前使用(类型)的形式,不会改变原变量的类型* $a(int)"123abc";** $变…

rhel 8.2不识别unicode_基于tensorflow 实现端到端的OCR:二代身份证号识别

最近在研究OCR识别相关的东西&#xff0c;最终目标是能识别身份证上的所有中文汉字数字&#xff0c;不过本文先设定一个小目标&#xff0c;先识别定长为18的身份证号&#xff0c;当然本文的思路也是可以复用来识别定长的验证码识别的。本文实现思路主要来源于Xlvector的博客&am…

Lua和C++交互详细总结

转载自&#xff1a;http://www.cnblogs.com/sevenyuan/p/4511808.html 一、Lua堆栈 要理解Lua和C交互&#xff0c;首先要理解Lua堆栈。 简单来说&#xff0c;Lua和C/C语言通信的主要方法是一个无处不在的虚拟栈。栈的特点是先进后出。 在Lua中&#xff0c;Lua堆栈就是一个struc…