如何使用比较器对ArrayList进行排序? [复制]

2024-03-03

我有一个实现静态方法的班级学生

public static Comparator<Student> getCompByName()

为 Student 返回一个新的比较器对象,该对象比较 2 个 Students 对象 通过属性“名称”。

我现在需要使用我的函数 getCompByName() 按“名称”对学生 ArrayList 进行排序来测试这一点。

这是我的 Student 类中的比较器方法。

public static Comparator<Student> getCompByName()
{   
 Comparator comp = new Comparator<Student>(){
     @Override
     public int compare(Student s1, Student s2)
     {
         return s1.name.compareTo(s2.name);
     }        
 };
 return comp;
}  

和我需要测试的主要地方

public static void main(String[] args)
{
    // TODO code application logic here

    //--------Student Class Test-------------------------------------------
    ArrayList<Student> students = new ArrayList();
    Student s1 = new Student("Mike");
    Student s2 = new Student("Hector");
    Student s3 = new Student("Reggie");
    Student s4 = new Student("zark");
    students.add(s1);
    students.add(s2);
    students.add(s3);
    students.add(S4);

    //Use getCompByName() from Student class to sort students

谁能告诉我如何在 main 中使用 getCompByName() 来实际按名称对 ArrayList 进行排序?我对比较器很陌生,并且很难理解它们的用法。该方法返回一个比较器,所以我不确定这将如何实现。我知道我需要使用 getCompByName() 进行排序,我只是不确定如何实现它。


Use the Collections.sort(列表,比较器) http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#sort%28java.util.List,%20java.util.Comparator%29 method:

Collections.sort(students, Student.getCompByName());

另外,在您的代码中最好使用List声明时的接口List:

List<Student> students = new ArrayList();

您还可以通过使用来收紧代码Student[]并将其传递给ArrayList构造函数:

public static void main(String[] args) {
    Student[] studentArr = new Student[]{new Student("Mike"),new Student("Hector"), new Student("Reggie"),new Student("zark")};
    List<Student> students = new ArrayList<Student>(Arrays.asList(studentArr));
    Collections.sort(students, Student.getCompByName());

    for(Student student:students){
        System.out.println(student.getName());
    }
}

这里有一个完整源码的要点 https://gist.github.com/kmb385/9477347.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用比较器对ArrayList进行排序? [复制] 的相关文章

  • SpringMVC 和 Hibernate:CannotCreateTransactionException:无法打开 Hibernate 会话进行事务;

    我正在尝试设置并Spring MVC 休眠项目 但它让我发疯 我还会考虑订购 xml 配置文件的建议 我有以下文件 web xml
  • 在 Java 中,三个 true 输入的 XOR 返回 true。为什么?

    下面的代码 System out println 1 0 0 true false false System out println 1 0 1 true false true System out println 1 1 0 true t
  • Java泛型类型要么扩展要么是父类

    我正在寻找一些如下所示的代码 public class Parent
  • 使用 stl sort 对表进行排序

    我有一个巨大的表 约 50Gb 格式为 i j k 来自稀疏矩阵 存储为 uint32 t idx1 idx2 float vals uint32 t tablesize 我想使用给定的比较函数 即 idx1 和 idx2 的函数 对其进行
  • 正则表达式查找两个字符之间的内部匹配

    环境 Java 我想匹配两个字符串之间的字符 这是一个例子 foo
  • 请放心,如何在 POST 请求后从响应正文中提取生成的令牌并将其设置到标头

    执行任何请求 我需要执行身份验证POST请求正文 username somename password somepass 标头Content Type application json这给了我一个带有生成令牌的响应 我需要将其粘贴为第二个标
  • Java Swing 自定义形状(2D 图形)

    我需要绘制自定义形状 现在 当用户单击面板上的几个点时 我使用多边形创建一个形状 public void mouseClicked MouseEvent e polygon addPoint e getX e getY repaint 但我
  • 创建UML图时应该编写构造函数吗?

    我有一项作业要求我为实际的 Java 程序创建 UML 图 但程序中有几个构造函数方法 我很困惑 我是否应该将这些构造函数方法添加到图中 根据 UML 规范 2 5 版第 11 4 4 节 构造函数是一个具有所属类类型的单个返回结果参数的操
  • 使用 Windows 锁定屏幕后删除 Kerberos 缓存票证

    无论如何 有没有办法阻止 Kerberos 缓存的票证在 Windows 进入锁定屏幕后被删除 首次登录 Windows 时 klist exe 显示 2 个缓存票证 但是 发生 Windows 锁屏事件后 klist exe 显示 0 个
  • Java setLocation() 事故

    我正处于创建一个程序来操作员工 客户系统的开始阶段 现在我刚刚创建了登录 GUI 但我遇到了一些问题 setLocation 方法 我将其设置为 250 250 但这使我的 GUI 高度变得非常疯狂 如果有人能够解决这个问题 我的代码如下
  • 如何将多个值存储到一个键(java)

    我搜索一个可以存储多个键值对的数据结构 数据基本上是这样的 1 value 1 2 value 2 于是我想到了使用HashMap 遗憾的是 这对我不起作用 因为一个键可能会出现多个值 在上面的例子中 1 value 2 可能是另一个条目
  • 在Java中打印时差最惯用的方法是什么?

    我熟悉以毫秒为单位的打印时间差 long time System currentTimeMillis do something that takes some time long completedIn System currentTime
  • 从两个数组中查找公共文件

    我正在尝试从两个数组中查找通用名称文件 我已将两个不同文件夹的文件名保存在两个不同的数组中 现在我正在创建一个通用文件数组 其中包含具有通用名称的文件 filenames 1 包含文件夹 1 中文件名称的数组 filename2 包含文件夹
  • 在同一个容器但不同的耳朵中使用本地EJB

    我正在尝试在同一个 Glassfish 但不同的耳朵中使用本地 EJB 但是Glassfish找不到本地EJB或者无法消费 我读到了这个 根据 JavaEE 教程 Local bean 的客户端 必须在与其访问的企业 bean 相同的 JV
  • Java检测音频文件(mp3)

    我有这段代码可以读取 mp3 文件 import java io File import java io IOException import javax sound sampled AudioSystem import javax sou
  • egit:设置gitignore忽略所有eclipse项目文件

    我在 github 上有一个项目 我想从中删除所有与 eclipse 相关的文件 并允许克隆它的人使用他们想要的任何 ide 这是该项目 https github com vedi0boy Archipelo https github co
  • 在硬件级别模拟按键 - Windows

    我正在寻找一种语言或库 使我能够在最大可能的水平上模拟击键 而无需实际按下按键 我对击键级别的具体衡量标准是 当我的计算机已经运行按键侦听器 例如鼠标键和粘滞键 时 它是否会产生与物理按键相同的输出 我尝试过很多击键模拟的方法 java A
  • Xuggler 未转换 .webm 文件?

    我只是尝试使用 Xuggler 将 mov 文件转换为 webm 这应该可以工作 因为 FFMPEG 支持 webm 文件 这是我的代码 IMediaReader reader ToolFactory makeReader home use
  • 无法以联觉方式绘制像素、Pi 数

    我想将 pi 数字的每个数字打印为彩色像素 因此 我得到一个带有 pi 数字的输入 然后将其解析为一个列表 每个节点包含一个数字 我知道 稍后我将使用一个数组 但我从来没有把它画到屏幕上 有人能帮我看看我错在哪里吗 import java
  • R中按字母顺序对每一行字符串进行排序

    我环顾四周 似乎找不到解决这个问题的好方法 我有一个包含行名称的列 我想按字母顺序对每一行进行排序 以便稍后可以识别具有相同名称但顺序不同的行 数据如下 names lt c John D Josh C Karl H John D Bob

随机推荐

  • 正则表达式 C# - 是否可以在匹配时提取匹配项?

    假设我有一个字符串 需要验证其格式是否正确 例如RR1234566 001 2 个字母 7 个数字 破折号 1 个或多个数字 我用类似的东西 Regex regex new Regex patternString if regex IsMa
  • 在查看器窗格中打开 R Markdown

    我正在使用 rmarkdown 包的渲染函数渲染带有参数的 R Markdown rmarkdown render file Rmd params ask 它会打开我的默认浏览器 Chrome 要求输入参数 我希望它不是在默认浏览器中打开
  • 如何覆盖材质 CSS 样式?

    我使用角度材质 2 Material CSS 中有一种 CSS 样式 mat radio button mat accent mat radio inner circle background color fff 我尝试在自定义 CSS 文
  • 使用 Laravel 的 Azure Active Directory SSO

    我正在使用 azure Active Directory 进行 sso 我已经在 azure 上完成了设置并开始操作 我正在使用计量学 laravel azure ad oauth https packagist org packages
  • R 中“data.frame 的标准公式接口”是什么意思?

    的文档aggregate states aggregate formula 是 aggregate data frame 的标准公式接口 我是R新手 不明白这是什么意思 请解释 Thanks Uri 跳转到示例部分的中间help aggre
  • php 自动化 setter 和 getter

    我正在尝试为 php 对象实现一些自动 getter 和 setter 我的目标是自动为每个属性提供方法getProperty and setProperty value 这样 如果没有为属性实现该方法 脚本将简单地设置或获取该值 举个例子
  • 如何在 PHP 中循环遍历已从 JSON 解码的对象数组,并回显值

    我是 PHP 新手 不知道如何继续 我从解码 JSOn 中返回的数组是 抱歉 如果其格式很奇怪 array 3 0 gt array 4 Name gt string 22 Brent s Medical Center date gt st
  • 基类和派生类中的同名对象不会被标记为错误

    class Base public type1 m Pants class Derived Base public type2 m Pants 这本质上并没有被标记为错误 而是在整个项目中造成了各种破坏和问题 有谁知道不会标记这一点的技术细
  • Struts 2.3 - 重定向与redirectAction

    之间的主要区别是什么redirect and redirectAction在Struts2 3上下文中 我看过以下网址redirect http struts apache org release 2 0 x docs redirect r
  • JavaScript 函数上下文不正确

    我注意到 javascript 中有一个奇怪的事情 考虑以下几点 var fn toUpperCase call console log typeof fn function fn Uncaught TypeError fn is not
  • 在相机预览上叠加静态可绘制图像

    我需要在手机处于相机预览模式时显示静态 png 图像 目前我正在引用此链接 a link 将图像叠加到相机预览 SurfaceView 上 https stackoverflow com questions 3548666 overlay
  • Angular $compile 与所需的控制器

    我有一个复合列表指令 即 一个列表项 它本身可以是一个列表 父指令定义控制器 directive parent function controller function scope link function scope element a
  • 如何像 pdf 文件一样下载 jpg 图像?

    我请求以与 pdf 文件相同的方式下载 jpg 图像 目前 如果我将 jpg 图像作为链接添加到网页 它将在另一个浏览器窗口中打开 而不是实际下载到用户计算机 但是 pdf 文件可以 这是标准代码 a href images my imag
  • 为什么 QGridLayout 小部件在添加新小部件时会移动?

    我似乎无法理解它们是如何工作的 放置多个小部件的最佳方式似乎是 QGridLayout 但是当我将某些内容添加到特定的行 列中 然后决定将某些内容添加到另一行 列中时 一切都会发生变化 这真的很令人沮丧 例如 我什至无法做像谷歌主页这样简单
  • 生成遵循分布的平滑随机数

    我有两个变量 我们称它们为x and y 绘制时是图中分散的蓝点 我已经使用 Scipy 中的 curve fit 拟合了它们 我想生成 假设 500000 平滑 复制分布的随机数 然后x and y By 平滑 我的意思是 我不想要完全复
  • 根据输入调整函数中的sql语句

    这事有点紧急啊 我正在尝试进行一个简单的过滤器搜索 您可以从一系列 3 个下拉列表中进行选择 然后基于此显示结果 我将如何调整每个下拉列表的 sql 查询 如果您要只选择从 3 个中的一个搜索 而不是从全部 3 个中搜索 等等 例如 可能存
  • 如何使用jQuery动态添加表单元素

    这是我的html div div class controls controls row div div
  • Chrome 控制台显示“导航到 http://localhost...”

    Chrome 控制台显示 导航到http localhost http localhost 用蓝色字母 Image 这是 Chrome 上的一项功能 当您选中 保留日志 选项时 可以分隔页面日志 如果您取消选中该框并重新加载页面 它不应显示
  • SCA 相对于 Spring 的优势?

    我有使用 Spring 开发 java web 应用程序的经验 但在 SOA 领域却没有那么多经验 我正在阅读有关 SCA SCA4J http www service conduit org user guide pdf http www
  • 如何使用比较器对ArrayList进行排序? [复制]

    这个问题在这里已经有答案了 我有一个实现静态方法的班级学生 public static Comparator