Nik*_*wal 0 java sorting arraylist comparable
实际上我想对Array List of objects进行排序.我为此目的使用Comparable接口.它完全正常工作但问题是,当我进行排序时,就是给出了这两个问题.
所有拥有首字母大写字母的名字都汇集在一起,所有名字第一个字母小的名字都在底部聚集在一起.
所有排序后的大写字母单词都汇集在一起,之后所有的小写字母一起出现在底部.
这是我的豆子
MyShares.java
public class Myshares implements Comparable<Myshares> {
int id, parent;
String name, path, type, shared_with, shared_or_not, upload_request;
public int getParent() {
return parent;
}
public void setParent(int parent) {
this.parent = parent;
}
public String getUpload_request() {
return upload_request;
}
public void setUpload_request(String upload_request) {
this.upload_request = upload_request;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getShared_with() {
return shared_with;
}
public void setShared_with(String shared_with) {
this.shared_with = shared_with;
}
public String getShared_or_not() {
return shared_or_not;
}
public void setShared_or_not(String shared_or_not) {
this.shared_or_not = shared_or_not;
}
@Override
public int compareTo(Myshares another) {
return this.name.compareTo(another.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
这是输出

我认为它基于ASCII码.我想要一个完整的排序列表.请看一下.
如果您希望不区分大小写,我建议您更改compareTo()方法,而不是使用compareToIgnoreCase()方法String- 即:
public int compareTo(Myshares another) {
return this.name.compareToIgnoreCase(another.getName());
}
Run Code Online (Sandbox Code Playgroud)
更改
@Override
public int compareTo(Myshares another) {
return this.name.compareTo(another.getName());
}
Run Code Online (Sandbox Code Playgroud)
至
@Override
public int compareTo(Myshares another) {
return String.CASE_INSENSITIVE_ORDER.compare(this.name, another.getName());
}
Run Code Online (Sandbox Code Playgroud)
或者使用nullPainter发布的更具可读性和非常好的解决方案.