`
这些年
  • 浏览: 400030 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

实现list自动排序

    博客分类:
  • java
阅读更多

1:实现comparable<list中的对像>接口

例:public class DataObject implements Comparable<DataObject>, Serializable {

2:重写hashcode和equals方法,重写compareTo(要比软的对像,即list中的对像)方法

例:

/**
  * 因为要按倒序排列,所以大于返回-1,等于返回0,小于返回1
  */
 public int compareTo(DataObject otherData) {
  if (this == otherData)
   return 0;
  if (otherData == null)
   return -1;
  if (this.value > otherData.value) {
   return -1;
  } else if (this.value == otherData.value) {
   return 0;
  } else {
   return 1;
  }
 }

 3:使用Collections.sort(List<DataObject >对像);// 按倒序从大到小排列

 

第二种方式(可参考:http://www.iteye.com/topic/503812

import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;

public class bbb {
	public static void main(String[] args) {

		Comparator<Person> comparator = new Comparator<Person>() {

			public int compare(Person o1, Person o2) {
				if (o1.getName() == o2.getName()) {
					return 0;
				}
				if (o1.getName() > o2.getName()) {
					return 1;
				}
				if (o1.getName() < o2.getName()) {
					return -1;
				}
				return 0;
			}

		};
        Set<Person> set = new TreeSet<Person>(comparator);
		Person p1 = new Person(1);
		Person p2 = new Person(2);
		Person p3 = new Person(3);
		Person p4 = new Person(4);
		Person p5 = new Person(5);
		Person p6 = new Person(6);
		set.add(p6);
		set.add(p3);
		set.add(p2);
		set.add(p5);
		set.add(p4);
		set.add(p1);
		for(Person p:set){
			System.out.println(p.getName());
		}
	}
}

class Person {
	public int name;

	public Person() {
	};

	public Person(int name) {
		this.name = name;
	}

	public int getName() {
		return name;
	}

	public void setName(int name) {
		this.name = name;
	}

}

 

分享到:
评论

相关推荐

    java中List对象列表实现去重或取出及排序的方法

    Java中List对象列表实现去重或取出及排序的方法 在Java中,对List对象列表实现去重或取出及排序是一种常见的操作。下面将详细介绍相关的方法和实现。 1. 实体类重写equals和hashCode方法 在Java中,想要去重List...

    VC中排序功能的list control

    本篇将深入探讨如何在VC++中实现具有排序功能的`List Control`。 标题中的“VC中排序功能的list control”指的是在VC++中开发的自定义`CListCtrl`派生类,添加了排序功能。这通常通过重写或扩展默认控件的行为来...

    c#使用bindlist绑定datagridview不能自动排序的解决类

    ### C# 使用 `BindableList` 绑定 `DataGridView` 无法自动排序的解决方案 #### 概述 在C#开发中,使用`DataGridView`控件展示数据是非常常见的做法。为了提高开发效率,我们通常会使用`BindingList&lt;T&gt;`来绑定数据...

    Android自动换行List 的 Demo

    它允许开发者将任意类型的View放入一个列表中,并且在横向排列时,当内容超出屏幕宽度时,会自动换行到下一行,以此来实现类似网格布局的效果,但更加灵活。 在Android中,这种功能通常可以通过自定义布局管理器...

    listctrl 排序

    在描述中提到的"listctrl控件排序标准代码"是指实现`ListCtrl`自动排序的程序代码。 在`ListCtrl`中进行排序,通常涉及到以下几个关键知识点: 1. **排序函数**:`ListCtrl`的排序功能是通过调用特定的排序函数来...

    DataGridView点绑定List击列头排序

    标题“DataGridView点绑定List击列头排序”指的是在`DataGridView`中绑定`List&lt;T&gt;`类型的数据,并实现点击列头进行自动排序的功能。由于默认情况下,`DataGridView`仅在绑定到支持排序的数据源(如`DataTable`或SQL...

    list自绘和list列排序

    通过调用SetSortHeaderCtrl,可以创建一个排序头控件,它提供了点击列头时自动排序的功能。不过,这种方式只能按升序或降序进行基本排序。 2. **自定义排序**:对于更复杂的排序需求,比如多列排序或自定义排序规则...

    Bamboy自动换行List

    "Bamboy自动换行List"是一种特殊的布局管理器,它允许开发者将任意类型的View组件(如按钮、文本视图、图片视图等)横向排列,并在内容超出屏幕边界时自动换行至下一行,类似于网格布局或者流式布局。这种布局方式在...

    React-基于react的拖拽并自动排序

    为了实现自动排序,我们需要在`SortableList`组件中维护一份排序状态。每次`onDrop`事件发生时,根据拖放的位置更新列表顺序,并调用`setState`来改变组件的状态,这会触发React的DOM更新,从而实现列表的自动重排。...

    c#实现combox自动搜索功能

    ### C# 实现 ComboBox 自动搜索功能 在开发桌面应用程序时,经常需要为用户提供便捷的交互体验。其中,实现类似于搜索引擎或智能输入框的自动搜索功能是提高用户体验的有效手段之一。本文将详细介绍如何使用C#语言...

    字典 自动排序 c#

    总结来说,要在C#中实现字典自动排序,可以通过转换为`List`并使用Linq的排序方法,或者使用内置的`SortedList`和`SortedDictionary`类。同时,根据用户输入实时更新排序结果,需要监听输入事件并进行相应的处理。在...

    C#实体类和实体类集合的自动排序

    本文将深入探讨如何在C#中实现实体类和实体类集合的自动排序,以及如何将它们绑定到控件如DataGridView以支持排序功能。 首先,让我们了解什么是实体类。实体类是代表数据库表或服务API中的一个记录的类。它通常...

    JCF(List、Set、Map)学习,实现了<key,value>按value排序噢

    TreeSet基于红黑树实现,自动维护元素的排序。默认按照元素的自然顺序或自定义比较器进行排序。 3. **Map**: 存储键值对,如HashMap和TreeMap。HashMap使用哈希表实现,不保证键值对的顺序;而TreeMap基于红黑树,...

    可以自动排序的CListCtrl

    这个教程我们将深入探讨如何实现一个“可以自动排序的CListCtrl”。 首先,我们要理解`CListCtrl`的基本用法。`CListCtrl`是MFC中的一个类,它封装了Windows API中的`LVITEM`结构和`ListView`控件。我们可以通过...

    List对象排序通用方法

    ### List对象排序通用方法 ...该方法不仅支持任意类型的`List`,还能够根据传入的属性名自动识别需要排序的属性。这大大提高了代码的复用性和灵活性,同时也简化了对`List`对象的排序操作,有助于提高系统的整体性能。

    CSharp_List.zip_C# list_C#中list_C#中list的用法_C#怎么引用List_c# list

    `List&lt;T&gt;`类是`System.Collections.Generic`命名空间的一部分,它实现了`IList&lt;T&gt;`, `ICollection&lt;T&gt;`, 和 `IEnumerable&lt;T&gt;`接口。下面我们将深入探讨`List&lt;T&gt;`的各种用法。 **1. 创建List对象:** 创建`List&lt;T&gt;`...

    实现ListControl中SubItems的编辑功能

    在MFC中,`CListCtrl`继承自`CWnd`,它提供了添加、删除、排序和编辑列表项的方法。要实现列表项的编辑功能,我们需要关注以下几个关键步骤: 1. **设置编辑模式**:当用户选择一个子项时,我们可以通过调用`...

    从n个数组中取出所有排列组合(Java实现)

    总结来说,从n个数组中取出所有排列组合的Java实现涉及到递归算法、回溯法以及数据结构的操作。理解这些概念并能够熟练运用是成为一名优秀程序员的关键。通过这个例子,我们可以看到如何利用Java的灵活性和表达力来...

    点击列头能排序的ListCtrl源代码

    在给定的"点击列头能排序的ListCtrl源代码"中,我们可以看到一个增强版的CListCtrl,名为CSortListCtrl,它扩展了基本的CListCtrl功能,实现了点击列头进行自动排序的功能,同时还添加了排序状态的图标,增强了用户...

    具有排序功能的list control

    总的来说,`MyListCtrl`类是MFC中`CListCtrl`的一个增强版本,它增强了列表控件的功能,使得用户可以通过点击列头实现数据的自动排序,这对于数据展示和用户交互有着显著的提升。通过阅读和分析`MyListCtrl.cpp`和`...

Global site tag (gtag.js) - Google Analytics