sort List of bean object in java alphabetically in ascending order
本问题已经有最佳答案,请猛点这里访问。
下面是bean类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
下面是我的Java类,我试图按升序排序bean的列表(我是按字母顺序排列):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class Test{ public static void main(String[] args) { bean b1 = new bean(); bean b2 = new bean(); bean b3 = new bean(); List<bean> beanList = new ArrayList<bean>(); b1.setName("b"); b2.setName("a"); b3.setName("Z"); beanList.add(b1); beanList.add(b2); beanList.add(b3); } } |
我不能像a,b,z这样按字母顺序对bean值进行排序,有人能给我建议吗?
你要分类2次,这是你所需要的
第一个测试不需要实现可比较的…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class Test { public static void main(String[] args) { Bean b1 = new Bean(); Bean b2 = new Bean(); Bean b3 = new Bean(); List<Bean> beanList = new ArrayList<Bean>(); b1.setName("b"); b2.setName("a"); b3.setName("Z"); beanList.add(b1); beanList.add(b2); beanList.add(b3); Collections.sort(beanList); System.out.println("finally" + beanList); } } |
bean类应该比较字符串,因为这是排序标准
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class Bean implements Comparable<Bean> { private String Name; public String getName() { return Name; } public void setName(String name) { Name = name; } @Override public String toString() { return"bean [Name=" + Name +"]"; } @Override public int compareTo(Bean o) { return o.getName().compareTo(this.getName()); } } |
编辑:
当然,您可以向bean类添加多个字段,例如:lastname或者您可以使用匿名的comparator并使用yoor自己的条件进行排序。
姓氏示例:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | public class Bean implements Comparable<Bean> { private String name; private String lastName; public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return"Bean [name=" + name +", lastName=" + lastName +"]"; } @Override public int compareTo(Bean o) { return this.getName().compareTo(o.getName()); } } |
使用comparator的内联定义的sort的第一个实现是正确的。
您会发现,在排序后的bean中,出现的顺序是"z"、"a"和"b"。
大写字母Z与小写字母A和B进行比较。因此,排序后的列表按上面的顺序排列。
如果希望比较不区分大小写,可以在比较之前对两个字符串都使用
参考FoLL。代码片段:
1 2 3 4 5 | Collections.sort(beanList, new Comparator<bean>() { public int compare(final bean object1, final bean object2) { return object1.getName().toLowerCase().compareTo(object2.getName().toLowerCase()); } }); |
您也可以使用
1 2 3 4 5 | Collections.sort(beanList, new Comparator<bean>() { public int compare(final bean object1, final bean object2) { return object1.getName().compareToIgnoreCase(object2.getName()); } }); |
或者,您可以使用第二个方法(collections.sort(),在这里您不显式地提到comparator,而对集合调用sort。这是可能的,因为bean类实现了
为了实现