如果我有要排序的元素列表,那么Java提供了两种解决方法。
例如,假设我有一个电影对象列表,我想按标题对它们进行排序。
我可以执行此操作的一种方法是通过将电影列表作为单个参数调用静态java.util.Collections.sort()方法的一个参数版本。因此,我将其称为Collections.sort(myMovieList)。为了使它起作用,必须声明Movie类以实现java.lang.Comparable接口,并且必须在该类内部实现所需的方法compareTo()。
排序的另一种方法是调用带有电影列表和参数java.util.Comparator的静态java.util.Collections.sort()方法的两个参数版本。我会调用Collections.sort(myMovieList,titleComparator)。在这种情况下,Movie类不会实现Comparable接口。相反,在构建和维护影片列表本身的主类中,我将创建一个实现java.util.Comparator接口的内部类,并实现一个必需的方法compare()。然后,我将创建此类的实例,并调用sort()的两个参数的版本。第二种方法的好处是您可以创建无限数量的这些内部类Comparators,因此您可以用不同的方式对对象列表进行排序。在上面的示例中,
我的问题是,当Collections.sort()的两个参数版本完成第一个参数的版本时的所有工作时,为什么还要花时间学习Java的两种排序方式,但是又具有能够对列表元素进行排序的额外好处基于几个不同的标准?编码时必须牢记一件事。您将了解一种使用Java对列表进行排序的基本机制。
一种是为了简洁起见,这是一种常见情况( Effective Java 2nd
Edition,第12项:考虑实现Comparable
)。正如您所指出的,另一个是灵活性和通用性。
问题内容: 有人知道为什么JUnit 4提供但不提供方法吗? 它提供了(对应于)和(对应于),因此它们似乎没有包含在内就显得很奇怪。 顺便说一下,我知道JUnit插件提供了我正在寻找的方法。我只是出于好奇而问。 问题答案: 我建议您使用较新的样式断言,该断言可以轻松描述各种否定形式,并在断言失败时自动构建对您的期望和得到的结果的描述: 这三个选项都是等效的,请选择最容易阅读的一个。 要使用方法的简
我很想知道为什么Java的可选不提供类似于流的方法。 接口的method javadoc声明: @apiNote此方法主要用于支持调试,您希望在元素流经管道中的某个点时看到这些元素 这几乎完全描述了我的用例: (返回 方法,上述所有内容都会转换为: 也可以这样做(参见此答案): 并将其与方法一起使用: 但我认为这是一个黑客,而不是的干净用法。 从Java 9开始,可以将< code>Optiona
我正在检查类,并发现LinkedList类提供了几种方法 所有这3个方法都在列表的头部添加了一个元素。那么为什么不同的实现需要相同的功能呢? 是因为推是为了斯塔克和 offerFirst–退出队列 addFirst-LinkedList 还是一些其他的基本面? 请在这里分享一些见解。谢谢
我用Kotlin和Spring-Boot的应用程序中的一个接口自动连接了bean列表。 在post构造中,我按类的简单名称对bean进行排序 我看到下一个结果 bean不是按简单的名称排序的。 我不明白为什么结果不一样。我试着用了一个类和一个字段-工作OK。 我错过了什么?
我正在使用代码优先和EF6创建一个小项目,但现在我面临一个问题: 如果一个实体有一个自动ID PK,并且例如3个实体(ID:1,ID:2,ID:4-Id3已删除),那么克隆上下文将具有(ID:1,ID:2,ID:3)的实体。 我的问题是:有没有办法强制AI PK的值,或者至少强制跳过ID?或者,是否有通过dbcontexts将数据库复制到另一个数据库的最佳方法? 我在这里发现了一篇关于编程生成ID
本质上,它包装了,确保了最大容量,并提供了一些其他有用的特性。更好的方法是直接将其实现为。 现在,为了方便起见,我认为最好实现,这样,如果您想要循环它,就可以使用增强的for-loops。(我的类还提供了方法,因此我认为是合理的。) 接口提供以下功能(省略了javadoc): null