我试着选一个段落,通过打印出前三个单词来找到它的“意义”。去掉所有语法单词和空白后,我使用Hashmap计算每个单词的出现次数。然后,由于我不知道更好的方法,我只是创建了自己的小自定义对象来存储单词、键和出现次数、值,就像Hashmap一样,但我的老师建议实现Comparable,但我遇到了一个问题。我有两个问题,一个在我“修复”另一个时出现。问题在于Pair类中的compareTo函数和另一个类中的Sort()函数。当我让compareTo函数返回int.并且它不允许我使用compareTo函数时,我得到了一个“pair不能转换为boolean”。
compareTo()我也知道compareTo应该返回int来重写,但当我跳到这里寻求帮助时,代码就是这样的。类原型也是
public class Pair implements Comparable<Pair>{
///.... variables, getters, setters, etc.
@Override
public boolean compareTo(Pair o) { // ERROR HERE
boolean z = false;
if (this.getValue() > o.getValue()) {
z = true;
}
else{
z = false;
}
return false;
}
以及使用Pair对象的sort/countwords函数。
public Pair[] sort(Pair[] arr) {
int max;
for (int i = 0; i < arr.length; i++) {
// Assume first element is min
max = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j],compareTo(arr[max]) == true){ //ERROR HERE
max = j;
}
}
if (max != i) {
final Pair temp = arr[i];
arr[i] = arr[max];
arr[max] = temp;
}
System.out.println(arr[i].getKey());// I print the in ascending order
}
return arr;
}
public void countWords() {
Map<String, Integer> m = new HashMap(); // set up a Hashmap to get the occurance of the words
for (String a : dataList) {
Integer freq = m.get(a);
m.put(a, (freq == null) ? 1 : freq + 1);
}
//create and fill array of custom Pair (key, value) objects, so it becomes sortable
int count = 0;
Pair[] pairs = new Pair[m.size()];
for (String key : m.keySet()) {
Pair pair = new Pair(key, m.get(key));
pairs[count] = pair;
count++;
}
Pair[] sortedPairs = sort(pairs);
}
compareTo必须返回一个int,否则您实际上并没有实现接口中定义的抽象方法。
根据Pair类中的getValue()方法返回的类型,您很可能将该方法定义为:
public int compareTo(Pair o) {
return getValue().compareTo(o.getValue());
}
compareTo()
必须返回int。它返回-1(object1
if ( pairA.compareTo(pairB) > 0 ) // if pairA > pairB
compareTo()
必须返回一个符合以下条件的int:
如果当前对象值小于另一个,则返回-1,如果它们相等,则返回0,如果它们更大,则返回1。
将您的方法更改为(假设getValue()返回int
):
@Override
public int compareTo(Pair o) {
return (this.getValue() < o.getValue()) ? -1 : (this.getValue() > o.getValue()) ? 1 : 0 ;
}
请注意,如果getValue()
返回其他对象类型,则可以使用该对象的默认实现compareTo()
。因此,如果getValue()
将返回例如一个BigDecimal
或
Integer
对象等,您可以使用
返回这个。getValue()。比较(o.getValue())
然后,在使用该方法时,更改行
if (arr[j],compareTo(arr[max]) == true)
到
if (arr[j].compareTo(arr[max]) == 0 ) //they are equal
我需要比较insert方法中的两个对象。但我无法弄清楚在哪里以及如何实现可比或比较器。我的代码如下所示: 这是我为二叉树创建的节点。
在爪哇中。如果我们必须将一个对象与另一个对象进行比较。我们比较该对象中的每个字段。 学生 1 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。学生 2 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。因此,要检查2名学生是否相等...我们比较每个字段。 但是,如果 Student 对象有许多字段,该怎么办?学生1对象有标记1,标记2,标记3,名称,年龄,地址,颜色,类,国家,部
创建一个名为“Circle”的Java类来实现Java。io。可串行化接口,并基于半径对圆进行建模。半径不能小于零。实现radius的getter和setter方法。还包括在circle类中重写toString。创建类的比较器,用于比较Circle类型的两个对象。 这就是我目前所拥有的 这是我的比较器类 我的问题是我做得对还是不对?
对于PostgreSQL(v9.5),JSONB格式提供了极好的机会。但现在我只能做一个相对简单的手术; 比较两个jsonb对象;查看一个文档与另一个文档相比有什么不同或缺失。 到目前为止我所拥有的 应该返回第1行与第2行的差异: 相反,它还返回重复项(
使用RestAssured,我试图比较两个JSON对象。 示例:第一个JSON来自excel,我将其作为字符串读取并存储 第二个 JSON 是返回响应对象的响应,该响应对象实际上是一个 JSON 我想将这两者作为JSON对象进行比较,因为当我将响应转换为String并尝试进行比较时,如果JSON模式的顺序发生变化,我的断言就会失败。 我尝试了将字符串转换成JSON的方法,但是没有找到任何方法。有人
我目前正在创建一个设计不佳的战舰游戏,我已经达到了一个点,我不知道如何从另一个对象访问一些数据。 我有一个板类,它创建两个大小为100的数组。我有一个玩家类,它有属于他们的两块板的实例(他们的板和敌人的板(击中,错过,空)) 我所遇到的问题是,如何使两个玩家的棋盘同步,但在棋盘的功能内,在玩家的内部。。。 我的职能应该是脱离董事会,以便 但是,在player1.boards的功能中,如何访问pla