按字母顺序排列数组列表(不区分大小写)

我有一个包含人名的stringarraylist names 。 我想按字母顺序排列数组列表。

 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)); 

我试图按照上面的方式对列表进行sorting。 但它正在显示sorting的数组:

 Athira Karthika .. .. ananya bala ... 

但我不想让它区分大小写。 我想要的结果是:

 ananya Athira bala 

自定义Comparator应该帮助

 Collections.sort(list, new Comparator<String>() { @Override public int compare(String s1, String s2) { return s1.compareToIgnoreCase(s2); } }); 

或者,如果您正在使用Java 8:

 list.sort(String::compareToIgnoreCase); 

最简单的事情是:

 Collections.sort(list, String.CASE_INSENSITIVE_ORDER); 

试试这个代码

 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 } } 

基于上面提到的答案,我设法比较我的自定义类对象是这样的:

 ArrayList<Item> itemList = new ArrayList<>(); ... Collections.sort(itemList, new Comparator<Item>() { @Override public int compare(Item item, Item t1) { String s1 = item.getTitle(); String s2 = t1.getTitle(); return s1.compareToIgnoreCase(s2); } }); 

您需要使用自定义比较器,它将使用compareToIgnoreCase ,而不是compareTo。

Java 8开始,您可以使用Stream

 List<String> sorted = Arrays.asList( names.stream().sorted( (s1, s2) -> s1.compareToIgnoreCase(s2) ).toArray(String[]::new) ); 

它从该ArrayList获取stream,然后对其进行sorting(忽略大小写)。 之后,stream被转换为一个数组,并转换为一个ArrayList

如果使用以下命令打印结果:

 System.out.println(sorted); 

你会得到以下输出:

 [ananya, Athira, bala, jeena, Karthika, Neethu, Nithin, seetha, sudhin, Swetha, Tony, Vinod]