我使用Comparator
接口使用以下代码片段按升序对对象进行排序:
final List<LinkModelSpi> documentLinks = this.documentLinksModelSpi.getDocumentLinks();
//Add This method for Sorting Document Link View Same Order. Now The application display same links order
// in catalogue administration edit drug window
if (Checks.checkNotNullAndNonEmpty(documentLinks)) {
if (this.documentLinksModelSpi.getDocumentLinks().iterator().next() instanceof DocumentLinkModelSpi) {
Collections.sort(documentLinks, (Comparator<? super LinkModelSpi>) new Comparator<DocumentLinkModelImpl>() {
@Override
public int compare(DocumentLinkModelImpl o1, DocumentLinkModelImpl o2) {
return o1.getResource().compareTo(o2.getResource());
}
});
} else {
Collections.sort(documentLinks, (Comparator<? super LinkModelSpi>) new Comparator<LinkModelImpl>() {
@Override
public int compare(LinkModelImpl o1, LinkModelImpl o2) {
return o1.getResource().compareTo(o2.getResource());
}
});
}
}
//Collections.reverse(documentLinks);
for (final LinkModelSpi documentLinkModelSpi : documentLinks) {
//noinspection unchecked
((DtoPresentationModelSpi<?, MDTO>) documentLinkModelSpi).addPropertyChangeListener(this);
}
最终结果如下:
但是我想按这样对列表进行排序:
无论大小写如何都对链接进行排序。我怎么能这样做?
答案 0 :(得分:2)
它按字典顺序比较字符串,因此大写字母在小写字母之前。您可以做的是使用内置String#compareToIgnoreCase
:
return o1.getResource().compareToIgnoreCase(o2.getResource());
或者您可以将比较小写的两个操作数都设为String#toLowerCase
:
return o1.getResource().toLowerCase().compareTo(o2.getResource().toLowerCase());
这样,没有资本可以扭曲结果,排序时只会考虑这封信。
注意:按字典顺序对字符串进行排序意味着"www.google10.com"
将在 "www.google9.com"
之前出现,因为字符串在字符间比较,而"1"
在字典上比{小于{ {1}}。
答案 1 :(得分:1)
通用解决方案是使用java.text.Collator
,这是一个专门的import java.text.Collator;
import java.util.*;
public class Example {
public static void main(String[] args) {
Collator en_US = Collator.getInstance(Locale.US);
Collator fi_FI = Collator.getInstance(new Locale("fi", "FI"));
// Optional configuration; read the Javadoc for more information
// en_US.setStrength(Collator.PRIMARY);
// en_US.setDecomposition(Collator.FULL_DECOMPOSITION);
List l = new ArrayList(Arrays.asList("Azz", "ämm", "aaa"));
Collections.sort(l, en_US);
System.out.printf("en_US: %s\n", l);
Collections.sort(l, fi_FI);
System.out.printf("fi_FI: %s\n", l);
}
}
// Output:
// en_US: [aaa, ämm, Azz]
// fi_FI: [aaa, Azz, ämm]
,它不仅可以处理大写/小写,还可以处理变音符号(例如ä和ë)并了解语言环境差异(例如,大多数西方语言将ë与e放在一起,但芬兰将其置于z之后)。
jQuery(document).ready(function($){
// jQuery code is in here
});