[英]Unable to understand the logic behind treesorting in this particular case of mine
I have the following "Person" class
-我有以下“人”
class
-
import java.rmi.activation.ActivationGroup_Stub;
public class Person implements Comparable<Person> {
private int marks;
private String name;
Person(int marks, String name) {
this.marks = marks;
this.name = name;
}
public int getMarks() {
return marks;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Person: Marks = " + marks + ", Name = " + name;
}
@Override
public int compareTo(Person person) {
int myReturn = 0;
if (marks > person.marks) {
myReturn = 1;
} else if (marks < person.marks) {
myReturn = -1;
} else {
int minLength = 0;
boolean equal = false;
if (name.length() < person.name.length()) {
minLength = name.length();
} else if (name.length() > person.name.length()) {
minLength = person.name.length();
} else {
minLength = name.length();
equal = true;
}
for (int i = 0; i < minLength; i++) {
if (i == minLength) {
if (equal) {
myReturn = 0;
break;
} else if (name.length() > minLength) {
myReturn = 1;
break;
} else {
myReturn = -1;
break;
}
} else if(name.charAt(i) > person.name.charAt(i)) {
myReturn = 1;
break;
} else if (name.charAt(i) < person.name.charAt(i)) {
myReturn = -1;
break;
} else {
continue;
}
}
}
return myReturn;
}
}
Now in main class I have made the TreeClass
-现在在主要课程中,我制作了
TreeClass
-
TreeSet<Person> treeSet1 = new TreeSet<>(List.of(
new Person(67, "Nusrat"),
new Person(67, "Nusrat"),
new Person(67, "Nupur"),
new Person(72, "Nupur"),
new Person(67, "Nupur"),
new Person(67, "Nipun"),
new Person( 67, "Nipuna"),
new Person(67, "Jhilam")
));
Upon printing the output is -打印后的输出是 -
Person: Marks = 67, Name = Jhilam
Person: Marks = 67, Name = Nipun
Person: Marks = 67, Name = Nupur
Person: Marks = 67, Name = Nusrat
Person: Marks = 72, Name = Nupur
All is right except "Nipun" and "Nipuna" are considered as equal.一切都是正确的,除了“Nipun”和“Nipuna”被认为是平等的。 Where am I going wrong?
我哪里错了?
I have solved my problem, it was a logical error in the for loops -我已经解决了我的问题,这是 for 循环中的一个逻辑错误 -
the correct code would be -正确的代码是 -
for (int i = 1; i <= minLength; i++)
Now output as expected -现在按预期输出 -
Person: Marks = 67, Name = Jasmine
Person: Marks = 67, Name = Jhilam
Person: Marks = 67, Name = Nipun
Person: Marks = 67, Name = Nipuna
Person: Marks = 67, Name = Nupur
Person: Marks = 67, Name = Nusrat
Person: Marks = 72, Name = Nupur
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.