问题
我有一个字符串arraylistnames
,其中包含人的名字。我想按字母顺序对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));
我试图以上述方式对列表进行排序。但是它将排序的数组显示为:
Athira
Karthika
..
..
ananya
bala
...
但我不想让它区分大小写。我希望结果如下:
ananya
Athira
bala
#1 热门回答(290 赞)
CustomComparator
应该有所帮助
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.compareToIgnoreCase(s2);
}
});
或者如果你使用的是Java 8:
list.sort(String::compareToIgnoreCase);
#2 热门回答(177 赞)
最简单的事情是:
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
#3 热门回答(29 赞)
试试这段代码
Collections.sort(yourarraylist, new SortBasedOnName());
import java.util.Comparator;
import com.RealHelp.objects.FBFriends_Obj;
import com.RealHelp.ui.importFBContacts;
public class SortBasedOnName implements Comparator
{
public int compare(Object o1, Object o2)
{
FBFriends_Obj dd1 = (FBFriends_Obj)o1;// where FBFriends_Obj is your object class
FBFriends_Obj dd2 = (FBFriends_Obj)o2;
return dd1.uname.compareToIgnoreCase(dd2.uname);//where uname is field name
}
}