在这种特殊情况下,无法理解树木背后的逻辑
我有以下“人” 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;
}
}
现在在主类中,我已经制作了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")
));
打印输出时 -
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
一切都是正确的,除了“ nipun”和“ nipuna”被认为是平等的。我要去哪里?
I have the following "Person" 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
-
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. Where am I going wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我已经解决了我的问题,这是for循环中的逻辑错误 -
正确的代码将是 -
现在按预期输出 -
I have solved my problem, it was a logical error in the for loops -
the correct code would be -
Now output as expected -