我的treeset.remove()有时可以正常工作。但在其他情况下,它不会遍历搜索匹配的所有元素,因此它不会删除我正在搜索的元素。下面是我对treeset compareTo的覆盖。
public class Entry implements Comparable<Entry>{
String oid, sd;
double p;
int sz, time;
public Entry(int time, String Order_id, String side, double price, int size){
this.oid = Ord
如果为类实现java.lang.Comparable,是否仍然必须重写equals()方法?或者Comparable也适用于equals吗?
如果答案是no,那么如果出现一些差异呢?假设在equals()方法中,我将两个对象定义为相等的方式与在compareTo() of Comparable中将同一个类中的两个对象定义为相等的方式不同。
此外,如果实现Comparable,是否也必须重写equals()?
II无法理解在实现接口时,类的自然顺序应该如何“与相等一致”。我在我的程序中发现了一个缺陷,因此我在接口的文档中检查了它。我的问题是,尽管在equals方法的基础上,两个对象被认为是不同的,但TreeMap结构将它们视为相等,因此不接受第二个插入。示例代码如下:
public class Car implements Comparable<Car> {
int weight;
String name;
public Car(int w, String n) {
weight=w;
name=n;
}
public boolean equals(Objec
请参见以下两个类:DTO和DTOWithOrdering
public class DTO {
private final String key;
private final long recordVersionNumber;
public DTO(String key) {
this.key = key;
this.recordVersionNumber = 0;
}
public DTO(String key, long recordVersionNumber) {
this.key = key;
我一直在网上寻找答案,但我发现的只是:
编辑:根据答案添加了一些项目
对于IEquatable
- I'm supposed to overload `Equals()`, `GetHashCode()`, `==` and `!=` together.
- I'm supposed to reduce redundancy via implementing `!=` via `==`.
- I'm supposed to seal the class
对于IComparable
- I'm supposed to overload
想知道所列出的方法需要做些什么
public final int compareTo(final FieldDTO o) {
return o.available.compareTo(this.available);
它在第2行抛出异常,声明Bad practice Class定义compareTo(...)并使用Object.equals() 16天
字段定义compareTo(FieldDTO)并使用Object.equals()
不知道该怎么处理这件事。提前谢谢。
我正在实现一个TreeSet,它将按人的年龄排序,但如果人的名字相等,则不会将人保存在set中。我实现了equals和hashcode,但是这个集合将保存所有人,即使他们有相同的名字。我也不知道原因。
public class Person implements Comparable<Person>{
private String name;
private int age;
public Person(String name, int age){
this.name = name;
this.age = age;
好吧,在我的一生中,我无法弄清楚如何根据比赛地点来分类我的数据。这是我的密码。
if (o == 5) {
double RD, t, old, x;
String tournament, player;
int a, number_of_players, place;
place = 0;
ArrayList<player> players = new ArrayList<player> ();
ArrayList<placeDisplay> placeVar = new ArrayList<place
BigDecimal的equals()方法也比较标度,所以
new BigDecimal("0.2").equals(new BigDecimal("0.20")) // false
这是为什么它的行为像这样。
现在,假设我有一个Set<BigDecimal>,,如何检查0.2是否独立于该集合?
Set<BigDecimal> set = new HashSet<>();
set.add(new BigDecimal("0.20"));
...
if (set.contains(new BigDecimal(&
请检查代码:
/* Run1.java */
package test;
import java.util.Iterator;
import java.util.SortedSet;
import java.util.TreeSet;
public class Run1
{
static public void main(String[] args)
{
SortedSet<TestClass> s = new TreeSet<TestClass>();
s.add( new TestClass("nam
我已经挣扎了几天,试图编写这段代码。基本上,我们必须基于学生数组中类似的“学生”对象的SSN来执行binarySearch。在SSN上执行binarySearch之后,与该SSN的名字和姓氏相关联的学生应该打印出来,该学生的位置/位置应该打印出来。我遇到的问题是,当我执行binarySearch查找学生的位置/位置时,它总是返回"-1“,而不是学生的元素位置。有什么帮助吗?
学生班
package binarySearch;
public class Student implements Comparable<Student>{
private String f
关于java中的compareTo方法,我有一个问题。因此,这个compareTo方法比较CarOwner对象,如果调用对象在时间序列上比参数的时间更早,则返回-1,如果调用对象的时间比参数晚,则返回1,如果调用对象和参数在时间时间上相同,则返回0。如果传入的参数不是CarOwner对象(使用instanceof或getClass确定此值)或为null,则返回-1。
我想出了这个代码,但它似乎不起作用,有人有什么建议吗?
public int compareTo(Object o)
{
if ((o != null ) && (o instanceof CarOwner
我有一个像Person这样的自定义类:
public class Person {
int age;
String name;
}
现在我想根据age对Person类对象进行排序。
所以我将使用Comparable接口并实现compareTo()方法。
compareTo将具有仅基于age比较person对象的逻辑。
所以如果我这么做了:
Collections.sort(list); // where list is a list of person
我将获得基于age的已排序人员列表。
但我在某处读到,当我们实现Comparable时,我们也需要覆盖equals()方法。
守则:
public class Equals {
public static void main(String[] args) {
String s1 = new String("java");
String s2 = new String("java");
if (s1 == s2) {
System.out.println("s1 == s2 is TRUE");
}
if (s1.equals(s2)) {
我正在编写一个简单的谓词函数如下:
public static Predicate<String> stringPredicate(String op, String compVal) {
if (op.equals("=")){
return p -> p.compareTo(compVal) == 0;
}
else if (op.equals("<")){
return p -> p.compareTo(compVal) == -1;
}
else if
我检查了用于字符串压缩的字符串比较方法,并研究了反编译器中的string类,发现基本上有四种方法
equals()
equalsIgnoreCase()
compareTo()
compareToIgnore()
现在我想知道我们使用的两个方法之间的区别,它们是equals()和compareTo(),基本上请说明为什么string类保留了这两个方法。
String tv = "Bravia";
String television = "Bravia";
// String compare example using equal
下面的代码应该打印3个人,但实际上它打印4个人,为什么?人(“a”,1)和人(“a”,4)应被视为相同,但它们不是。
import java.util.TreeSet;
public class Person implements Comparable<Person>{
public Person(String name, int age){
this.name = name;
this.age = age;
}
public String name;
public int age;
@Override
我有一个SortedDictionary<Package, List<string>>。以下是包类:
using System;
namespace GetPackageInfo
{
public class Package : IComparable, IEquatable<Package>
{
public string PackageName;
public string Version;
public Package()
{
}
public Package(string packageNa
以下c#代码将无法编译,并显示错误"operator == cannot be applied to operator of 'T‘and 'T'“。
public class Widget<T> where T: IComparable
{
public T value;
public Widget(T input) { value = input; }
public bool Equals<T>(Widget<T> w) where T : System.IComparable
{
我正在做我的项目,需要覆盖tostring,equals和hashcode方法。但是在这样做之后,object中的值没有被正确地迭代和搜索,我只是怀疑这些方法有问题。请查看下面的类,并帮助找出这些方法之间的合同中可能存在的问题。
public class Range implements Comparable<Range> {
private BigDecimal first;
private BigDecimal last;
@Override
public boolean equals(Object o) {
if (this
我有一个名为Employee的类,它的成员变量是employeeName和employeeId。我正在创建新的Employee对象,然后将其添加到TreeSet中,以便根据employeeId对其进行排序。但是如果两个Employee对象具有相同的employeeName,我认为它们是相等的。Set不允许重复。但在这里我可以观察到一种奇怪的行为。这是我的代码。(我在这里不使用getter和setter。我直接访问成员变量。)
package secondOne;
import java.util.Set;
import java.util.TreeSet;
class Employee i