我有一个字符串arraylist names,其中包含人的名字.我想按字母顺序对arraylist进行排序.
ArrayList<String> names = new ArrayList<String>();
names.add("seetha");
names.add("sudhin");
names.add("Swetha");
names.add("Neethu");
names.add("ananya");
names.add("Athira");
names.add("bala");
names.add("Tony");
names.add("Karthika");
names.add("Nithin");
names.add("Vinod");
names.add("jeena");
Collections.sort(names);
for(int i=0; i<names.size(); i++)
System.out.println(names.get(i));
Run Code Online (Sandbox Code Playgroud)
我尝试以上述方式对列表进行排序.但是它将排序的数组显示为:
Athira
Karthika
..
..
ananya
bala
...
Run Code Online (Sandbox Code Playgroud)
但我不想让它区分大小写.我希望结果如下:
ananya
Athira
bala
Run Code Online (Sandbox Code Playgroud) 我需要编写一个Java Comparator类来比较Strings,但是有一个转折.如果它比较的两个字符串在字符串的开头和结尾是相同的,并且不同的中间部分是整数,则根据这些整数的数值进行比较.例如,我希望以下字符串以它们显示的顺序结束:
如您所见,字符串中可能还有其他整数,因此我不能只使用正则表达式来分解任何整数.我正在考虑从一开始就走绳子,直到找到一点不匹配,然后走到最后,直到找到一个不匹配的位,然后比较中间的位到正则表达式"[0-9] +",如果比较,则进行数值比较,否则进行词法比较.
有没有更好的办法?
更新我不认为我可以保证字符串中的其他数字,可能匹配的数字,周围没有空格,或者不同的数字确实有空格.
我有一个方法返回需要排序的String列表.但是,我遇到了旧的字符串编号排序问题,并想知道是否有人可以协助比较器实现或指向我的方向.
该列表将返回一个列表:
State Lower Legislative District 1
State Lower Legislative District 11
State Lower Legislative District 12
...
State Lower Legislative District 2
...
State Lower Legislative District 100
...
State Upper Legislative District 1
State Upper Legislative District 11
...
Run Code Online (Sandbox Code Playgroud)
所以,首先我需要做一个基本的String排序,但是我需要按数字排序.要排序的数字应该总是跟踪,可能是2或3位数.
(编辑)我最初的想法是在空格上拆分字符串,在数字部分运行StringUtils.isNumeric,然后排序.然而,这对我来说似乎有点困难.
有人可以帮忙吗?
Comparator在Guava中是否有一个实现以"自然"方式对字符串进行排序,可能包含数字?
例如:
"a 8"
"a 9"
"a 10"
我找到了一些有趣的链接,但看起来guava中没有任何东西可以完成这项工作......
StackOverflow:"对可能包含数字的字符串进行排序"对Alphanum算法的
一个很好的解释
问题是我有这个问题.我知道为什么它在开头,因为它是1和0,因此它在9之前甚至在排序之后.但是,使用lists sort()方法可以使用正确的顺序吗?
我只是想看看是否有一种简单的方法来对String对象列表进行排序.我现在面临的问题是Collections.sort(...)方法对我不起作用.
这是我的原始列表,根据我的要求目的排序:
List<String> values = new ArrayList<String>();
values.add("section_1");
values.add("section_2");
values.add("section_3");
values.add("section_4");
values.add("section_5");
values.add("section_6");
values.add("section_7");
values.add("section_8");
values.add("section_9");
values.add("section_10");
values.add("section_11");
values.add("section_12");
values.add("section_13");
Run Code Online (Sandbox Code Playgroud)
在完成Collections.sort(values)之后,订单现在被破坏了:
section_1
section_10
section_11
section_12
section_13
section_2
section_3
section_4
section_5
section_6
section_7
section_8
section_9
Run Code Online (Sandbox Code Playgroud)
这是因为Collections.sort(...)中使用的词典排序吗?是否有更简单的方法使这种排序按我想要的方式工作?
提前致谢.
要复制HashMap到的语句序列TreeMap
private Map<String,Bitmap> imageFilexx= new HashMap<String,Bitmap>();
//Assuming map has values
printMap(imageFilexx);
TreeMap<String,Bitmap> imageFilexxS;
imageFilexxS= new TreeMap<String,Bitmap>(imageFilexx);
printMap(imageFilexxS);
Run Code Online (Sandbox Code Playgroud)
功能显示在地图上方:
public static void printMap(Map<String, Bitmap> map) {
for (Map.Entry entry : map.entrySet()) {
System.out.println("Key : " + entry.getKey());
}
}
Run Code Online (Sandbox Code Playgroud)
输入:
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p7.png
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p1.png
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p5.png
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p3.png
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p11.png
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p9.png
Run Code Online (Sandbox Code Playgroud)
目前的O/P:
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p1.png
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p11.png //11 should be displayed in the last
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p3.png
Key : http://myserver.com/myfolder/ImageDesc/ImageDesc%20p5.png …Run Code Online (Sandbox Code Playgroud) private ArrayList<String> mArrayList = new ArrayList<String>();
mArrayList.clear();
mArrayList.add("test 3");
mArrayList.add("test 21");
mArrayList.add("test 4");
mArrayList.add("test 6");
mArrayList.add("test 1");
Collections.sort(mArrayList);
for (int i = 0; i < mArrayList.size(); i++) {
Log.e("TAG", "" + mArrayList.get(i));
}
Run Code Online (Sandbox Code Playgroud)
结果是:
test 1
test 21
test 3
test 4
test 6
Run Code Online (Sandbox Code Playgroud)
但我想要:
test 1
test 3
test 4
test 6
test 21
Run Code Online (Sandbox Code Playgroud)
我把它排序但不完美,怎么做,我不知道,如果你有任何想法,请与我分享.
我正在尝试对由数字和字母组成的字符串的arylylist进行排序,列表的一个示例一旦排序将是:
name 1
name 2
name 3
name 11
name 12
name 13
Run Code Online (Sandbox Code Playgroud)
但是当我使用collections.sort()时,它会这样排序:
name 1
name 11
name 12
name 13
name 2
name 3
Run Code Online (Sandbox Code Playgroud)
任何想法,我正在寻找的那种类型将被称为或如何做?
我有一个由字符串组成的ArrayList.这个ArrayList包含......
"60分钟""120分钟""30分钟"
如果我使用Collections.sort(ArrayList);它首先导致"120分钟".这是因为"120"中的"1"明显小于"30"中的"3"
有没有一种简单的方法可以对这个ArrayList进行排序,使其显示为......
"30分钟""60分钟""120分钟"
java ×10
sorting ×7
arraylist ×4
natural-sort ×2
string ×2
algorithm ×1
android ×1
collections ×1
comparison ×1
guava ×1