`

Collections soft [ 根据List 中的对象里的属性进行排序] 和 Set 排序

    博客分类:
  • Java
阅读更多

    [此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。]


    [实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。

    对于类 C 的每一个 e1 和 e2 来说,当且仅当 e1.compareTo(e2) == 0 与 e1.equals(e2) 具有相同的 boolean 值时,类 C 的自然排序才叫做与 equals 一致。注意,null 不是任何类的实例,即使 e.equals(null) 返回 false,e.compareTo(null) 也将抛出 NullPointerException。

    建议(虽然不是必需的)最好使自然排序与 equals 一致。这是因为在使用自然排序与 equals 不一致的元素(或键)时,没有显式比较器的有序集合(和有序映射表)行为表现“怪异”。尤其是,这样的有序集合(或有序映射表)违背了根据 equals 方法定义的集合(或映射表)的常规协定。

    例如,如果将两个键 a 和 b 添加到没有使用显式比较器的有序集合中,使 (!a.equals(b) && a.compareTo(b) == 0),那么第二个 add 操作将返回 false(有序集合的大小没有增加),因为从有序集合的角度来看,a 和 b 是相等的。

    实际上,所有实现 Comparable 的 Java 核心类都具有与 equals 一致的自然排序。java.math.BigDecimal 是个例外,它的自然排序将值相等但精确度不同的 BigDecimal 对象(比如 4.0 和 4.00)视为相等。

    从数学上讲,定义给定类 C 上自然排序的关系式 如下:

          {(x, y)|x.compareTo(y) <= 0}。
    整体排序的商 是:
          {(x, y)|x.compareTo(y) == 0}。
    它直接遵循 compareTo 的协定,商是 C 的等价关系,自然排序是 C 的整体排序。当说到类的自然排序与 equals 一致 时,是指自然排序的商是由类的 equals(Object) 方法定义的等价关系。
        {(x, y)|x.equals(y)}。此接口是 Java Collections Framework 的成员。
    ]


    [下面是一个简单的例子 : ]

public class ComparableClazz implements erializable,Comparable<ComparableClazz > {
 private Integer orders;
 
 public Integer getOrders() {
      return orders;
 }

 public void setOrders(int orders) {
      this.orders = orders;
 }

 @Override
 public int compareTo(ComparableClazz o) {
    if (this.getOrders().compareTo(o.getOrders()) > 0) {
	return 1;	
    }
		  
    if (this.getOrders().compareTo(o.getOrders()) < 0) {
	return -1;
    }
    return 0;
 }

}


    [调用 ]


 List<ComparableClazz > comparableClazzs = new ArrayList<ComparableClazz >();

ComparableClazz comparableClazz1 = new ComparableClazz();
comparableClazz1.setOrders(3);


ComparableClazz comparableClazz2 = new ComparableClazz();
comparableClazz2 .setOrders(5);

ComparableClazz comparableClazz3 = new ComparableClazz();
comparableClazz3 .setOrders(1);

comparableClazzs .add(comparableClazz1 );
comparableClazzs .add(comparableClazz2 );
comparableClazzs .add(comparableClazz3 );
Collections.sort(comparableClazzs );


[list]
[Pring it]
1 3 5 

[/list]
********************************************************



    [Set 如何排序 : ]


public Class Test {
  
   public static void main(String args[]) {
     Test test = new Test();
     test.sort();
   }
    
    public void sort() {
       Set<String> set = new TreeSet<String>();
         set.add("Z");
	 set.add("A");
	 set.add("F");
	 set.add("B");
	 set.add("H");
	 set.add("X");
	 set.add("N");
	 for (String item : set) {
	     System.out.print(item + " ");
	 }
    
    }

}




    [Pring : ]

A B F H N X Z



分享到:
评论

相关推荐

    java版本List中对象多属性排序.rar

    在Java编程中,对List集合中的对象进行多属性排序是一项常见的任务。这通常涉及到自定义比较逻辑,以满足复杂的数据排序需求。在这个“java版本List中对象多属性排序.rar”压缩包中,我们可能找到了一个关于如何在...

    List中保存对象,按对象中某一属性排序【含程序源码】

    在编程领域,尤其是在Java或类似的面向对象语言中,经常需要处理列表(List)数据结构,并根据对象中的特定属性...在实际开发中,根据对象属性排序是一种常见的需求,熟练掌握这一技巧对于提升代码质量与效率至关重要。

    List 对象属性排序

    ### List对象属性排序知识点 #### 一、概述 在Java编程中,经常需要对`List`集合中的对象按照特定属性进行排序。传统的方法是在每个实体类中重写`Comparable`接口或提供比较器(`Comparator`),这不仅增加了代码...

    java List 排序 Collections.sort

    总结起来,`Collections.sort()`是Java中对List进行排序的标准工具,它支持自然排序和自定义排序。了解其工作原理和优化技巧,可以帮助我们在编程实践中更高效地处理数据。通过阅读和理解`Collections.sort()`的源码...

    根据对象属性将对象排序

    ### 根据对象属性将对象排序 在编程领域中,我们经常会遇到需要对一组对象进行排序的需求。这种排序可以基于单个属性或者多个属性来进行。本文档将详细讲解如何通过对象的一个或多个属性来实现对象的排序,并支持...

    JAVA 对象数组按照多个属性进行排序

    本文将深入探讨如何在Java中实现这个功能,结合给出的标签“源码”和“工具”,我们将讨论标准库中的`Comparator`接口和`Collections.sort()`方法,以及自定义比较逻辑。 首先,了解Java中的`Comparable`和`...

    根据list中对象的属性去重和排序小结(必看篇)

    本文将讨论如何根据List中对象的属性去重和排序,解决实际开发中常见的问题。我们将使用Java语言,通过示例代码,演示如何实现对象的去重和排序。 去重 在实际开发中,我们经常会遇到List中对象的去重问题。例如,...

    java 使用Collections类对List的排序操作

    1. **自然排序**:如果 `List` 中的元素是实现了 `Comparable` 接口的对象,那么可以使用 `Collections.sort()` 方法进行自然排序。`Comparable` 接口定义了一个 `compareTo()` 方法,该方法用于比较对象之间的大小...

    Java 对象属性map排序示例

    **Java对象属性排序** 如果我们有一个对象类,其中包含一个Map属性,我们可以先对Map进行排序,然后再处理对象列表。假设我们有以下User类: ```java public class User { private String name; private Map, ...

    Java实体类中Set按照对象的某个字段对set排序

    例如,在User实体类中,我们使用Set集合来存储PositionChange对象,但是我们无法根据PositionChange对象的positionStartDate字段对Set集合进行排序。 二、解决方案 要解决这个问题,我们可以使用List集合来存储...

    java 按对象属性排序

    在Java编程中,按对象属性排序是一个常见的需求,特别是在数据处理和数据分析的场景下。这里我们探讨的主题是如何根据对象的属性进行排序,结合提供的`Simple.java`和`User.java`文件,我们可以假设这是一个关于...

    基于ArrayList的对象多属性值排序

    本主题将深入探讨如何对ArrayList中的对象按照多个属性进行排序。 首先,我们来看`Student.java`类,它通常会包含一个或多个属性,比如学生的姓名(name)、学号(id)或其他信息。例如: ```java public class ...

    java中list排序

    在 Java 中,对 List 排序可以使用 Collections.sort(list) 方法,但是这种方法只能对基本类型的 List 进行排序,如果 List 中包含的是对象,那么这种方法就不行了。这时需要使用Comparator接口来实现排序。 ...

    List对象排序通用方法

    本文将详细讨论如何对包含对象的`List`进行排序,包括正序和倒序,以及如何按指定参数排序。 首先,我们可以使用`Collections.sort()`方法对`List`进行排序。这个方法适用于已经实现了`Comparable`接口的元素类型,...

    java中进行集合排序

    在Java编程中,对集合(如`List`)中的对象进行排序是一项常见的操作。本文将详细介绍如何根据对象的特定属性来实现升序或降序排序。 #### 标题:Java中进行集合排序 该标题表明文章的主题是关于Java语言中如何对...

    c# List类排序方法

    当涉及到对List中的数据进行排序时,我们可以采用多种不同的策略和技术。本篇文章将详细介绍`List&lt;T&gt;`的排序方法,并通过具体的示例帮助读者更好地理解和应用这些技术。 为了方便演示排序过程,我们创建了一个简单...

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

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

Global site tag (gtag.js) - Google Analytics