`
584506509
  • 浏览: 12033 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

依据List内部对象的某字段进行排序的方法

阅读更多

依据List内部对象的某字段进行排序的方法

List内部对象类IntStringtest为测试用例类

Collections.sort方法,实现对List的排序,需要重写Comparator方法

代码如下:

List里存放的实体

package org.iti.wxl.listobjectsort;

public class IntString {
	
	private Integer no;
	
	private String str;

	public Integer getNo() {
		return no;
	}

	public void setNo(Integer no) {
		this.no = no;
	}

	public String getStr() {
		return str;
	}

	public void setStr(String str) {
		this.str = str;
	}

	@Override
	public String toString() {
		return "IntString [" + (no != null ? "no=" + no + ", " : "")
				+ (str != null ? "str=" + str : "") + "]";
	}

}

 

package org.iti.wxl.listobjectsort;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Test {
	public static void main(String[] args) {
		List<IntString> islist = new ArrayList<IntString>();
		IntString is1 = new IntString();
		is1.setNo(1);
		is1.setStr("计091");

		IntString is3 = new IntString();
		is3.setNo(3);
		is3.setStr("计093");

		IntString is2 = new IntString();
		is2.setNo(2);
		is2.setStr("计092");

		islist.add(is1);
		islist.add(is3);
		islist.add(is2);
		
		System.out.println(islist);
		Collections.sort(islist, new MyComparator());
		System.out.println(islist);
	}
}

class MyComparator implements Comparator<Object> {
	@Override
	public int compare(Object o1, Object o2) {
		IntString iso1 = (IntString)o1;
		IntString iso2 = (IntString)o2;
		String str1 = iso1.getStr();
		String str2 = iso2.getStr();
		return str1.compareTo(str2);
//		Integer no1 = iso1.getNo();
//		Integer no2 = iso2.getNo();
//		if(no1 > no2){
//			return 1;
//		}else if(no1 < no2){
//			return -1;
//		}else{
//			return 0;
//		}
	}

}

 如果是String类型的数据比较大小,Comparator方法里用str1.compareTo(str2) 方法,如果是数值比较大小,则用<,=,>比较,>返回1,=返回0,<返回-1。

分享到:
评论

相关推荐

    关于.NET Framework中的设计模式--应用策略模式为List排序

    通过实现这个接口,我们可以定义多个字段作为排序依据,例如,对于一个Student对象,我们可以按姓名、成绩或年龄来排序。为此,需要创建一个比较器: ```csharp public interface IComparer { int Compare(T x, T ...

    自定义查询对象组件封装例子

    自定义查询对象通常包含一组属性,这些属性对应于数据库查询条件,如:查询字段、排序依据、分页参数等。例如,可以创建一个`QueryObject`类,包含`String`类型的`searchKeyword`用于全文搜索,`List&lt;Integer&gt;`类型...

    Python Cookbook

    **2.4 先按一个字段排序,再按另一个字段排序** 可以使用`sorted`函数的`key`参数指定多个排序标准。例如:`sorted(items, key=itemgetter(1, 0))`。 **2.5 使用二分查找在有序序列中查找项** 可以使用二分查找...

    unity面试题

    - **概念**: 运行时获取程序集中的类型信息和元数据,创建对象实例,访问和修改字段、方法和属性。 - **用途**: 动态加载程序集,实现插件化编程。 #### 9. Lambda表达式 - **定义**: 简洁的匿名函数,通常用于作为...

    2021-2022计算机二级等级考试试题及答案No.4016.docx

    在给出的例子中,由于方法内部进行了浮点数运算,因此返回类型应该是`double`。 ### 23. 软件危机的表现 - **知识点**:软件危机的表现形式。 - **解析**:软件危机的表现包括软件开发生产率低、软件质量难以控制...

    asp.net StringBuilder的用法 实例代码

    查询参数包括要显示的字段、排序依据以及筛选条件,例如这里使用了"top10"来限制查询结果只返回前10条记录。 4. 字符串的格式化。在添加图片路径和公司链接时,使用了StringBuilder的AppendFormat方法。这种格式化...

    2021-2022计算机二级等级考试试题及答案No.12923.docx

    - 当打开一个建立了结构复合索引的数据表时,记录的排序依据通常是**主索引标识**。如果不存在主索引,则可能会按照第一个索引标识或其他特定规则排序。 ### 软件生命周期的需求分析阶段 - **需求分析**:在这个...

    2021-2022计算机二级等级考试试题及答案No.3406.docx

    7. TreeSet与Comparable接口:若无自定义比较器,TreeSet会依据元素实现的Comparable接口来排序元素。 8. 子程序调用的数据结构:栈。栈是一种后进先出(LIFO)的数据结构,常用于函数调用的上下文保存。 9. 标准...

    2021-2022计算机二级等级考试试题及答案No.1971.docx

    - **解析**:报表的数据属性主要包括记录源、排序依据和筛选条件等,而打印版式属于报表的布局属性。因此,本题的答案为**C**。 #### 计算机网络 - **知识点**:计算机网络的基础概念。 - **解析**:计算机网络是由...

    python-常用单词及语法_1681366872966.doc

    `max`和`min`找到元组中的最大和最小值,`iterable`表示可以迭代的对象,`key`指定了排序依据,`function`是自定义函数,`stop`用于`range`函数中指定结束值,`object`是Python中的基本数据结构。 七、列表 列表...

    2021-2022计算机二级等级考试试题及答案No.11215.docx

    - 在计算机中,字符串的排序依据ASCII码值进行比较。 - 数字字符串“12”在ASCII表中以“1”开始,“5”和“6”的ASCII码值比“1”大,但因为字符串“5”和“6”长度不同,因此在比较时,首先比较第一个字符,之后...

    2021-2022计算机二级等级考试试题及答案No.12547.docx

    - 排序依据:报表数据的排序规则。 - 筛选:报表数据的过滤条件。 - **非报表数据属性:** 打印版式,这是报表的设计属性而非数据属性。 ### 输入设备的作用 **知识点概述:** - **输入设备:** 用于向计算机...

    2021-2022计算机二级等级考试试题及答案No.17682.docx

    - **题目解析**:`OnChange()`事件发生在用户更改字段内容时,例如更改文本框(`&lt;input type="text"&gt;`)中的内容、选择列表框中的项等。因此,正确答案为D。 #### 题目22:E-R模型到关系模型的转换 - **知识点概述...

    2021-2022计算机二级等级考试试题及答案No.5357.docx

    16. SQL列表查询:在FoxPro等数据库管理系统中,LIST命令用于列出指定字段,FOR条件用于筛选数据。 17. 索引错误理解:一个表可以建立多个索引,索引的作用包括加快查询速度和提供数据排序依据。 18. 关键字:在...

    2021-2022计算机二级等级考试试题及答案No.17579.docx

    之后,可以通过`sort()`方法对列表进行排序。对于给出的代码片段,`ss`列表将包含从字符串"jzzszyj"中提取的不同字符,并按字母顺序排序。由于未给出完整的代码实现,无法确定最终的输出结果。但是,该过程展示了...

Global site tag (gtag.js) - Google Analytics