Java collections sort method for string is not working properly for case sensitive and special characters
I was working on sorting a list of String in Java (1.8) and came to know that it is not working as expected!
I am trying the following code for sorting:
private Set<String> getTestData() {
Set<String> compRoles = new HashSet<>();
compRoles.add("AA");
compRoles.add("Aa");
compRoles.add("aA");
compRoles.add("aa");
compRoles.add("11");
compRoles.add("117");
compRoles.add("12");
compRoles.add("21");
compRoles.add("!@");
compRoles.add("@!");
compRoles.add("@@!");
compRoles.add("BB");
compRoles.add("Bb");
compRoles.add("bb");
return compRoles;
}
public static void main(String args) {
List<String> test = new ArrayList<>(new Test().getTestData());
System.out.println(test);
Collections.sort(test);
System.out.println(test);
}
Before sort: [AA, Aa, aA, aa, 11, BB, Bb, bb, 12, @!, @@!, 117, 21, !@]
After sort: [!@, 11, 117, 12, 21, @!, @@!, AA, Aa, BB, Bb, aA, aa, bb]
My expectation is: [!@, @!, @@!, 11, 117, 12, 21, aa, aA, Aa, AA, bb, Bb, BB]
Do I need to use something else other that natural sort for this?
java sorting collections
add a comment |
I was working on sorting a list of String in Java (1.8) and came to know that it is not working as expected!
I am trying the following code for sorting:
private Set<String> getTestData() {
Set<String> compRoles = new HashSet<>();
compRoles.add("AA");
compRoles.add("Aa");
compRoles.add("aA");
compRoles.add("aa");
compRoles.add("11");
compRoles.add("117");
compRoles.add("12");
compRoles.add("21");
compRoles.add("!@");
compRoles.add("@!");
compRoles.add("@@!");
compRoles.add("BB");
compRoles.add("Bb");
compRoles.add("bb");
return compRoles;
}
public static void main(String args) {
List<String> test = new ArrayList<>(new Test().getTestData());
System.out.println(test);
Collections.sort(test);
System.out.println(test);
}
Before sort: [AA, Aa, aA, aa, 11, BB, Bb, bb, 12, @!, @@!, 117, 21, !@]
After sort: [!@, 11, 117, 12, 21, @!, @@!, AA, Aa, BB, Bb, aA, aa, bb]
My expectation is: [!@, @!, @@!, 11, 117, 12, 21, aa, aA, Aa, AA, bb, Bb, BB]
Do I need to use something else other that natural sort for this?
java sorting collections
13
so, for you 'a' comes before 'A' .. ok. well, you'll need to write your own sorting logic, but it 'll be pretty broad. you'll actually have to compare char by char. good luck.
– Stultuske
20 hours ago
8
The answer is in the question. Given that the natural ordering doesn't order elements as you would like to, you need something else.
– JB Nizet
20 hours ago
This is already implemented in jQuery sort. datatables.net/examples/styling/bootstrap4 But I don't the the algo they are using! Because of this UI and back-end is not in sync. Any idea on this?
– Prabal Srivastava
19 hours ago
1
The unicode of ! is smaller than that of @ , unicode of @ is small than 1, unicode of 1 is smaller than A, uncicode of A is smaller than a. Hope it answers for the output that you get. Now If you need sorting as per your ordering , implement your comparator.
– nits.kk
18 hours ago
@nits.kk: I am totally agree with the answer given by jaspreet. We can solve this issue by using docs.oracle.com/javase/7/docs/api/java/text/Collator.html
– Prabal Srivastava
18 hours ago
add a comment |
I was working on sorting a list of String in Java (1.8) and came to know that it is not working as expected!
I am trying the following code for sorting:
private Set<String> getTestData() {
Set<String> compRoles = new HashSet<>();
compRoles.add("AA");
compRoles.add("Aa");
compRoles.add("aA");
compRoles.add("aa");
compRoles.add("11");
compRoles.add("117");
compRoles.add("12");
compRoles.add("21");
compRoles.add("!@");
compRoles.add("@!");
compRoles.add("@@!");
compRoles.add("BB");
compRoles.add("Bb");
compRoles.add("bb");
return compRoles;
}
public static void main(String args) {
List<String> test = new ArrayList<>(new Test().getTestData());
System.out.println(test);
Collections.sort(test);
System.out.println(test);
}
Before sort: [AA, Aa, aA, aa, 11, BB, Bb, bb, 12, @!, @@!, 117, 21, !@]
After sort: [!@, 11, 117, 12, 21, @!, @@!, AA, Aa, BB, Bb, aA, aa, bb]
My expectation is: [!@, @!, @@!, 11, 117, 12, 21, aa, aA, Aa, AA, bb, Bb, BB]
Do I need to use something else other that natural sort for this?
java sorting collections
I was working on sorting a list of String in Java (1.8) and came to know that it is not working as expected!
I am trying the following code for sorting:
private Set<String> getTestData() {
Set<String> compRoles = new HashSet<>();
compRoles.add("AA");
compRoles.add("Aa");
compRoles.add("aA");
compRoles.add("aa");
compRoles.add("11");
compRoles.add("117");
compRoles.add("12");
compRoles.add("21");
compRoles.add("!@");
compRoles.add("@!");
compRoles.add("@@!");
compRoles.add("BB");
compRoles.add("Bb");
compRoles.add("bb");
return compRoles;
}
public static void main(String args) {
List<String> test = new ArrayList<>(new Test().getTestData());
System.out.println(test);
Collections.sort(test);
System.out.println(test);
}
Before sort: [AA, Aa, aA, aa, 11, BB, Bb, bb, 12, @!, @@!, 117, 21, !@]
After sort: [!@, 11, 117, 12, 21, @!, @@!, AA, Aa, BB, Bb, aA, aa, bb]
My expectation is: [!@, @!, @@!, 11, 117, 12, 21, aa, aA, Aa, AA, bb, Bb, BB]
Do I need to use something else other that natural sort for this?
java sorting collections
java sorting collections
edited 10 hours ago
Peter Mortensen
13.8k1987113
13.8k1987113
asked 20 hours ago
Prabal SrivastavaPrabal Srivastava
158110
158110
13
so, for you 'a' comes before 'A' .. ok. well, you'll need to write your own sorting logic, but it 'll be pretty broad. you'll actually have to compare char by char. good luck.
– Stultuske
20 hours ago
8
The answer is in the question. Given that the natural ordering doesn't order elements as you would like to, you need something else.
– JB Nizet
20 hours ago
This is already implemented in jQuery sort. datatables.net/examples/styling/bootstrap4 But I don't the the algo they are using! Because of this UI and back-end is not in sync. Any idea on this?
– Prabal Srivastava
19 hours ago
1
The unicode of ! is smaller than that of @ , unicode of @ is small than 1, unicode of 1 is smaller than A, uncicode of A is smaller than a. Hope it answers for the output that you get. Now If you need sorting as per your ordering , implement your comparator.
– nits.kk
18 hours ago
@nits.kk: I am totally agree with the answer given by jaspreet. We can solve this issue by using docs.oracle.com/javase/7/docs/api/java/text/Collator.html
– Prabal Srivastava
18 hours ago
add a comment |
13
so, for you 'a' comes before 'A' .. ok. well, you'll need to write your own sorting logic, but it 'll be pretty broad. you'll actually have to compare char by char. good luck.
– Stultuske
20 hours ago
8
The answer is in the question. Given that the natural ordering doesn't order elements as you would like to, you need something else.
– JB Nizet
20 hours ago
This is already implemented in jQuery sort. datatables.net/examples/styling/bootstrap4 But I don't the the algo they are using! Because of this UI and back-end is not in sync. Any idea on this?
– Prabal Srivastava
19 hours ago
1
The unicode of ! is smaller than that of @ , unicode of @ is small than 1, unicode of 1 is smaller than A, uncicode of A is smaller than a. Hope it answers for the output that you get. Now If you need sorting as per your ordering , implement your comparator.
– nits.kk
18 hours ago
@nits.kk: I am totally agree with the answer given by jaspreet. We can solve this issue by using docs.oracle.com/javase/7/docs/api/java/text/Collator.html
– Prabal Srivastava
18 hours ago
13
13
so, for you 'a' comes before 'A' .. ok. well, you'll need to write your own sorting logic, but it 'll be pretty broad. you'll actually have to compare char by char. good luck.
– Stultuske
20 hours ago
so, for you 'a' comes before 'A' .. ok. well, you'll need to write your own sorting logic, but it 'll be pretty broad. you'll actually have to compare char by char. good luck.
– Stultuske
20 hours ago
8
8
The answer is in the question. Given that the natural ordering doesn't order elements as you would like to, you need something else.
– JB Nizet
20 hours ago
The answer is in the question. Given that the natural ordering doesn't order elements as you would like to, you need something else.
– JB Nizet
20 hours ago
This is already implemented in jQuery sort. datatables.net/examples/styling/bootstrap4 But I don't the the algo they are using! Because of this UI and back-end is not in sync. Any idea on this?
– Prabal Srivastava
19 hours ago
This is already implemented in jQuery sort. datatables.net/examples/styling/bootstrap4 But I don't the the algo they are using! Because of this UI and back-end is not in sync. Any idea on this?
– Prabal Srivastava
19 hours ago
1
1
The unicode of ! is smaller than that of @ , unicode of @ is small than 1, unicode of 1 is smaller than A, uncicode of A is smaller than a. Hope it answers for the output that you get. Now If you need sorting as per your ordering , implement your comparator.
– nits.kk
18 hours ago
The unicode of ! is smaller than that of @ , unicode of @ is small than 1, unicode of 1 is smaller than A, uncicode of A is smaller than a. Hope it answers for the output that you get. Now If you need sorting as per your ordering , implement your comparator.
– nits.kk
18 hours ago
@nits.kk: I am totally agree with the answer given by jaspreet. We can solve this issue by using docs.oracle.com/javase/7/docs/api/java/text/Collator.html
– Prabal Srivastava
18 hours ago
@nits.kk: I am totally agree with the answer given by jaspreet. We can solve this issue by using docs.oracle.com/javase/7/docs/api/java/text/Collator.html
– Prabal Srivastava
18 hours ago
add a comment |
2 Answers
2
active
oldest
votes
You can use the Collator class of Java.
public static void main(String args) {
List<String> test = new ArrayList<>(new Test().getTestData());
System.out.println(test);
test.sort(Collator.getInstance(Locale.ENGLISH));
System.out.println(test);
}
Output:-
[AA, Aa, aA, aa, 11, BB, Bb, bb, 12, @!, @@!, 117, 21, !@]
[!@, @!, @@!, 11, 117, 12, 21, aa, aA, Aa, AA, bb, Bb, BB]
1
Thanks alot (y)
– Prabal Srivastava
18 hours ago
3
Now days theList
class has its ownsort
method, so going through is an unnecessary step. It is a little bit clearer to write the code like this:list.sort(Collator.getInstance(Locale.ENGLISH));
.
– Lii
16 hours ago
Thanks @Lii . Updated the answer. I didn't read he was working in Java 8 so answered Collections.sort instead of list.sort
– jaspreet
15 hours ago
2
It not always clear what Java version to target in our answers. But Java 8 has been out almost 5 years now! I think we can safely assume that that is the standard. Now days you can even declare your list like this:var test = new ArrayList<>(new Test().getTestData());
– Lii
15 hours ago
add a comment |
You could create a custom comparator for your sorting logics. After this you can use it like this:
Collections.sort(yourArrayList, new YourComparator());
Appropriate your answer. I know the use of comparator and comparable. I am looking for the logic or algorithm used behind this.
– Prabal Srivastava
19 hours ago
1
Then you question should look like you need a custom comparator, and should contain question about sorting algortims. The easiest way is to have weights for each letter and compare them in your way.
– ipave
19 hours ago
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55216244%2fjava-collections-sort-method-for-string-is-not-working-properly-for-case-sensiti%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can use the Collator class of Java.
public static void main(String args) {
List<String> test = new ArrayList<>(new Test().getTestData());
System.out.println(test);
test.sort(Collator.getInstance(Locale.ENGLISH));
System.out.println(test);
}
Output:-
[AA, Aa, aA, aa, 11, BB, Bb, bb, 12, @!, @@!, 117, 21, !@]
[!@, @!, @@!, 11, 117, 12, 21, aa, aA, Aa, AA, bb, Bb, BB]
1
Thanks alot (y)
– Prabal Srivastava
18 hours ago
3
Now days theList
class has its ownsort
method, so going through is an unnecessary step. It is a little bit clearer to write the code like this:list.sort(Collator.getInstance(Locale.ENGLISH));
.
– Lii
16 hours ago
Thanks @Lii . Updated the answer. I didn't read he was working in Java 8 so answered Collections.sort instead of list.sort
– jaspreet
15 hours ago
2
It not always clear what Java version to target in our answers. But Java 8 has been out almost 5 years now! I think we can safely assume that that is the standard. Now days you can even declare your list like this:var test = new ArrayList<>(new Test().getTestData());
– Lii
15 hours ago
add a comment |
You can use the Collator class of Java.
public static void main(String args) {
List<String> test = new ArrayList<>(new Test().getTestData());
System.out.println(test);
test.sort(Collator.getInstance(Locale.ENGLISH));
System.out.println(test);
}
Output:-
[AA, Aa, aA, aa, 11, BB, Bb, bb, 12, @!, @@!, 117, 21, !@]
[!@, @!, @@!, 11, 117, 12, 21, aa, aA, Aa, AA, bb, Bb, BB]
1
Thanks alot (y)
– Prabal Srivastava
18 hours ago
3
Now days theList
class has its ownsort
method, so going through is an unnecessary step. It is a little bit clearer to write the code like this:list.sort(Collator.getInstance(Locale.ENGLISH));
.
– Lii
16 hours ago
Thanks @Lii . Updated the answer. I didn't read he was working in Java 8 so answered Collections.sort instead of list.sort
– jaspreet
15 hours ago
2
It not always clear what Java version to target in our answers. But Java 8 has been out almost 5 years now! I think we can safely assume that that is the standard. Now days you can even declare your list like this:var test = new ArrayList<>(new Test().getTestData());
– Lii
15 hours ago
add a comment |
You can use the Collator class of Java.
public static void main(String args) {
List<String> test = new ArrayList<>(new Test().getTestData());
System.out.println(test);
test.sort(Collator.getInstance(Locale.ENGLISH));
System.out.println(test);
}
Output:-
[AA, Aa, aA, aa, 11, BB, Bb, bb, 12, @!, @@!, 117, 21, !@]
[!@, @!, @@!, 11, 117, 12, 21, aa, aA, Aa, AA, bb, Bb, BB]
You can use the Collator class of Java.
public static void main(String args) {
List<String> test = new ArrayList<>(new Test().getTestData());
System.out.println(test);
test.sort(Collator.getInstance(Locale.ENGLISH));
System.out.println(test);
}
Output:-
[AA, Aa, aA, aa, 11, BB, Bb, bb, 12, @!, @@!, 117, 21, !@]
[!@, @!, @@!, 11, 117, 12, 21, aa, aA, Aa, AA, bb, Bb, BB]
edited 16 hours ago
answered 19 hours ago
jaspreetjaspreet
774421
774421
1
Thanks alot (y)
– Prabal Srivastava
18 hours ago
3
Now days theList
class has its ownsort
method, so going through is an unnecessary step. It is a little bit clearer to write the code like this:list.sort(Collator.getInstance(Locale.ENGLISH));
.
– Lii
16 hours ago
Thanks @Lii . Updated the answer. I didn't read he was working in Java 8 so answered Collections.sort instead of list.sort
– jaspreet
15 hours ago
2
It not always clear what Java version to target in our answers. But Java 8 has been out almost 5 years now! I think we can safely assume that that is the standard. Now days you can even declare your list like this:var test = new ArrayList<>(new Test().getTestData());
– Lii
15 hours ago
add a comment |
1
Thanks alot (y)
– Prabal Srivastava
18 hours ago
3
Now days theList
class has its ownsort
method, so going through is an unnecessary step. It is a little bit clearer to write the code like this:list.sort(Collator.getInstance(Locale.ENGLISH));
.
– Lii
16 hours ago
Thanks @Lii . Updated the answer. I didn't read he was working in Java 8 so answered Collections.sort instead of list.sort
– jaspreet
15 hours ago
2
It not always clear what Java version to target in our answers. But Java 8 has been out almost 5 years now! I think we can safely assume that that is the standard. Now days you can even declare your list like this:var test = new ArrayList<>(new Test().getTestData());
– Lii
15 hours ago
1
1
Thanks alot (y)
– Prabal Srivastava
18 hours ago
Thanks alot (y)
– Prabal Srivastava
18 hours ago
3
3
Now days the
List
class has its own sort
method, so going through is an unnecessary step. It is a little bit clearer to write the code like this: list.sort(Collator.getInstance(Locale.ENGLISH));
.– Lii
16 hours ago
Now days the
List
class has its own sort
method, so going through is an unnecessary step. It is a little bit clearer to write the code like this: list.sort(Collator.getInstance(Locale.ENGLISH));
.– Lii
16 hours ago
Thanks @Lii . Updated the answer. I didn't read he was working in Java 8 so answered Collections.sort instead of list.sort
– jaspreet
15 hours ago
Thanks @Lii . Updated the answer. I didn't read he was working in Java 8 so answered Collections.sort instead of list.sort
– jaspreet
15 hours ago
2
2
It not always clear what Java version to target in our answers. But Java 8 has been out almost 5 years now! I think we can safely assume that that is the standard. Now days you can even declare your list like this:
var test = new ArrayList<>(new Test().getTestData());
– Lii
15 hours ago
It not always clear what Java version to target in our answers. But Java 8 has been out almost 5 years now! I think we can safely assume that that is the standard. Now days you can even declare your list like this:
var test = new ArrayList<>(new Test().getTestData());
– Lii
15 hours ago
add a comment |
You could create a custom comparator for your sorting logics. After this you can use it like this:
Collections.sort(yourArrayList, new YourComparator());
Appropriate your answer. I know the use of comparator and comparable. I am looking for the logic or algorithm used behind this.
– Prabal Srivastava
19 hours ago
1
Then you question should look like you need a custom comparator, and should contain question about sorting algortims. The easiest way is to have weights for each letter and compare them in your way.
– ipave
19 hours ago
add a comment |
You could create a custom comparator for your sorting logics. After this you can use it like this:
Collections.sort(yourArrayList, new YourComparator());
Appropriate your answer. I know the use of comparator and comparable. I am looking for the logic or algorithm used behind this.
– Prabal Srivastava
19 hours ago
1
Then you question should look like you need a custom comparator, and should contain question about sorting algortims. The easiest way is to have weights for each letter and compare them in your way.
– ipave
19 hours ago
add a comment |
You could create a custom comparator for your sorting logics. After this you can use it like this:
Collections.sort(yourArrayList, new YourComparator());
You could create a custom comparator for your sorting logics. After this you can use it like this:
Collections.sort(yourArrayList, new YourComparator());
answered 20 hours ago
ipaveipave
1889
1889
Appropriate your answer. I know the use of comparator and comparable. I am looking for the logic or algorithm used behind this.
– Prabal Srivastava
19 hours ago
1
Then you question should look like you need a custom comparator, and should contain question about sorting algortims. The easiest way is to have weights for each letter and compare them in your way.
– ipave
19 hours ago
add a comment |
Appropriate your answer. I know the use of comparator and comparable. I am looking for the logic or algorithm used behind this.
– Prabal Srivastava
19 hours ago
1
Then you question should look like you need a custom comparator, and should contain question about sorting algortims. The easiest way is to have weights for each letter and compare them in your way.
– ipave
19 hours ago
Appropriate your answer. I know the use of comparator and comparable. I am looking for the logic or algorithm used behind this.
– Prabal Srivastava
19 hours ago
Appropriate your answer. I know the use of comparator and comparable. I am looking for the logic or algorithm used behind this.
– Prabal Srivastava
19 hours ago
1
1
Then you question should look like you need a custom comparator, and should contain question about sorting algortims. The easiest way is to have weights for each letter and compare them in your way.
– ipave
19 hours ago
Then you question should look like you need a custom comparator, and should contain question about sorting algortims. The easiest way is to have weights for each letter and compare them in your way.
– ipave
19 hours ago
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55216244%2fjava-collections-sort-method-for-string-is-not-working-properly-for-case-sensiti%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
13
so, for you 'a' comes before 'A' .. ok. well, you'll need to write your own sorting logic, but it 'll be pretty broad. you'll actually have to compare char by char. good luck.
– Stultuske
20 hours ago
8
The answer is in the question. Given that the natural ordering doesn't order elements as you would like to, you need something else.
– JB Nizet
20 hours ago
This is already implemented in jQuery sort. datatables.net/examples/styling/bootstrap4 But I don't the the algo they are using! Because of this UI and back-end is not in sync. Any idea on this?
– Prabal Srivastava
19 hours ago
1
The unicode of ! is smaller than that of @ , unicode of @ is small than 1, unicode of 1 is smaller than A, uncicode of A is smaller than a. Hope it answers for the output that you get. Now If you need sorting as per your ordering , implement your comparator.
– nits.kk
18 hours ago
@nits.kk: I am totally agree with the answer given by jaspreet. We can solve this issue by using docs.oracle.com/javase/7/docs/api/java/text/Collator.html
– Prabal Srivastava
18 hours ago