我们在List里存入一些对象,比如person对象,若想要让这些对象按他们的age属性大小排序,不用我们自己实现,java已经帮我们实现了,我们只要实现Comparator接口,重写其中的compare方法就好~
下面是实现的代码:
person.java
public class Person {
String name;
int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
MyComparetor.java (实现 java 的Comparetor接口)
import java.util.Comparator;
public class MyComparetor implements Comparator {
// 按年龄排序
// public int compare(Object o1, Object o2){
// Person p1=(Person)o1;
// Person p2=(Person)o2;
// return (p2.getAge()-p1.getAge());
// }
// 按姓名排序
public int compare(Object o1, Object o2){
Person p1=(Person)o1;
Person p2=(Person)o2;
return (p1.getName().compareTo(p2.getName()));
}
}
上面的compare方法会返回3种值, -1,0,1. 当第一个大于第二个的时候返回1,相等返回0,小于返回-1
按姓名排序中,用p1compareto p2是升序,反之是降序
测试类:
public static void main(String[] args) {
// TODO Auto-generated method stub
List list=new ArrayList();
list.add(new Person("weichao",22));
list.add(new Person("lb",20));
list.add(new Person("sf",18));
list.add(new Person("wj",30));
Collections.sort(list,new MyComparetor());
Person person = null;
for(int i = 0; i < list.size(); i++){
person = (Person) list.get(i);
System.out.println("name:" + person.getName() + ",age:" + person.getAge());
}
}
by NN 2009-9-29
分享到:
相关推荐
此方法用于将两个已经根据时间顺序排列的List合并成一个新的单一List,并进行排序。 2、该类设计有泛型,任何类型的集合List都可以调用该类。 3、使用者可以通过调用`ListMerger.mergeAndSortLists()`方法,传入两...
### C# 使用 `BindableList` 绑定 `DataGridView` 无法自动排序的解决方案 #### 概述 在C#开发中,使用`DataGridView`控件展示数据是非常常见的做法。为了提高开发效率,我们通常会使用`BindingList<T>`来绑定数据...
它允许开发者将任意类型的View放入一个列表中,并且在横向排列时,当内容超出屏幕宽度时,会自动换行到下一行,以此来实现类似网格布局的效果,但更加灵活。 在Android中,这种功能通常可以通过自定义布局管理器...
标题“DataGridView点绑定List击列头排序”指的是在`DataGridView`中绑定`List<T>`类型的数据,并实现点击列头进行自动排序的功能。由于默认情况下,`DataGridView`仅在绑定到支持排序的数据源(如`DataTable`或SQL...
"Bamboy自动换行List"是一种特殊的布局管理器,它允许开发者将任意类型的View组件(如按钮、文本视图、图片视图等)横向排列,并在内容超出屏幕边界时自动换行至下一行,类似于网格布局或者流式布局。这种布局方式在...
创建`List<T>`对象时,我们需要指定T的类型,即存储的数据类型。例如,创建一个存储整数的列表: ```csharp List<int> numbers = new List(); ``` 或者初始化时直接添加元素: ```csharp List<int> numbers = new...
6. **文件管理和列表展示**: Alist 的核心功能可能包括对用户文件的组织、搜索、排序和显示。这可能涉及到文件系统的操作,如读取、写入和遍历目录结构,以及使用数据结构(如列表或表格)来可视化文件信息。 7. **...
这个教程我们将深入探讨如何实现一个“可以自动排序的CListCtrl”。 首先,我们要理解`CListCtrl`的基本用法。`CListCtrl`是MFC中的一个类,它封装了Windows API中的`LVITEM`结构和`ListView`控件。我们可以通过...
本文将深入探讨如何在C#中实现实体类和实体类集合的自动排序,以及如何将它们绑定到控件如DataGridView以支持排序功能。 首先,让我们了解什么是实体类。实体类是代表数据库表或服务API中的一个记录的类。它通常...
在给定的"点击列头能排序的ListCtrl源代码"中,我们可以看到一个增强版的CListCtrl,名为CSortListCtrl,它扩展了基本的CListCtrl功能,实现了点击列头进行自动排序的功能,同时还添加了排序状态的图标,增强了用户...
本文将详细介绍一种通用方法,用于将`DataSet`对象转化为`List`,并实现自动类型转换,提高代码的复用性和开发效率。 #### 一、`DataSet`与`List`简介 - **DataSet**:是.NET框架中用于存储从数据库中检索的数据的...
2. **排序算法**:基类内部会实现一个排序算法,如快速排序、冒泡排序或选择排序,根据数据类型和数量选择合适的算法。排序算法会根据列头的点击顺序和排序标志(升序或降序)对ListCtrl中的项进行重新排列。 3. **...
### List对象排序通用方法 ...该方法不仅支持任意类型的`List`,还能够根据传入的属性名自动识别需要排序的属性。这大大提高了代码的复用性和灵活性,同时也简化了对`List`对象的排序操作,有助于提高系统的整体性能。
而"具有排序功能的list control"则是对`CListCtrl`的扩展,它增加了点击列表头进行自动排序的功能。 标题中的“具有排序功能的list control”指的是一个自定义的`CListCtrl`派生类,例如`MyListCtrl`,该类通过重写...
### 知识点:网页点击表头实现自动排序 #### 一、背景介绍 在Web开发中,数据展示经常需要通过表格的形式呈现给用户。为了提高用户体验,通常会在表格上添加排序功能,使得用户可以通过点击表头来对表格中的数据...
SortedList是Python中的一个有序列表,它扩展了Python的内置list类型,提供了额外的排序功能。SortedList会自动保持其元素的排序状态,无论是插入新元素还是删除现有元素,它都会立即进行调整。这在需要频繁地对列表...
在C#中,我们可以使用`Array`或`List<T>`等数据结构来辅助实现控件的排序。以下是一种常见的方法: 1. 将`Panel`的`Controls`集合转换为`List<Control>`。这可以通过`Controls.Cast().ToList()`完成,这样我们就...
在Duilib中,"DuiList" 是一种常见的控件类型,用于展示可排序的数据列表。本篇文章将详细探讨DuiList的排序功能及其相关知识。 首先,我们要理解DuiList的基本概念。DuiList通常用于显示一系列具有相同结构的项目...
3. 排序:`List<T>`提供`Sort()`方法,对于实现了`IComparable<T>`接口的类型,可以直接排序。若需要自定义排序规则,可以传递一个比较器`Comparison<T>`或`IComparer<T>`实例。 4. 分割与合并:`List<T>.Split()`...
参数`list`应为列表类型。 2. **Focus(self, idx)** - 将指定索引的项设为焦点并显示。 3. **GetFirstSelected(self, *args)** - 获取第一个被选中的项的索引。如果没有选中任何项,则返回-1。 4. **GetFocusedItem...