`
3806850
  • 浏览: 93618 次
  • 性别: Icon_minigender_2
  • 来自: 沈阳
社区版块
存档分类
最新评论

List排序 根据里面的几个不同的元素依次排

阅读更多
java List 排序 Collections.sort() 对 List 排序
//一个POJO例子

class User {
String name;
String age;

public User(String name,String age){
  this.name=name;
  this.age=age;
}
public String getAge() {
  return age;
}
public void setAge(String age) {
  this.age = age;
}
public String getName() {
  return name;
}
public void setName(String name) {
  this.name = name;
}
}



//具体的比较类,实现Comparator接口

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

public class ComparatorUser implements Comparator{

public int compare(Object arg0, Object arg1) {
  User user0=(User)arg0;
  User user1=(User)arg1;

   //首先比较年龄,如果年龄相同,则比较名字

  int flag=user0.getAge().compareTo(user1.getAge());
  if(flag==0){
   return user0.getName().compareTo(user1.getName());
  }else{
   return flag;
  } 
}

}




//测试类
public class SortTest {


public static void main(String[] args){
  List userlist=new ArrayList();
  userlist.add(new User("dd","4"));
  userlist.add(new User("aa","1"));
  userlist.add(new User("ee","5"));
  userlist.add(new User("bb","2")); 
  userlist.add(new User("ff","5"));
  userlist.add(new User("cc","3"));
  userlist.add(new User("gg","6"));
 
  ComparatorUser comparator=new ComparatorUser();
  Collections.sort(userlist, comparator);
  
  for (int i=0;i<userlist.size();i++){
   User user_temp=(User)userlist.get(i);
      System.out.println(user_temp.getAge()+","+user_temp.getName());
  }
 
}
}

//首先年龄排序,如果年龄相同,则按名字排序

结果:
   1, aa
   2, bb
   3, cc
   4, dd
   5, ee                    //注意:同样是5岁的人,则比较名字(ee,ff),然后排序
   5, ff
   6, gg


分享到:
评论

相关推荐

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

    排列是指从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列的所有可能的方式;组合则是指不考虑元素的顺序,仅考虑元素的选取。在这个问题中,我们不仅要考虑元素的选取,还要考虑它们的顺序,因此属于...

    c#各种排序算法动态图形演示-数据结构经典算法动态演示

    它可以将待排序的序列构造成一个大顶堆或小顶堆,然后交换堆顶元素与最后一个元素,再调整堆,这样依次将元素放入已排序部分。 这些排序算法在实际应用中各有优缺点,例如,冒泡排序和插入排序简单但效率较低,适用...

    c语言实现堆排序

    在C语言中实现堆排序时,通常会涉及到以下几个关键步骤: 1. **构建最大堆**:首先需要构建一个最大堆,即对于每个非叶子节点i,都有`heap[i] &gt;= heap[2*i]`且`heap[i] &gt;= heap[2*i+1]`。 2. **交换堆顶元素与堆尾...

    PHP中的几种排序算法1

    选择排序每次从未排序的元素中找到最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。PHP中的实现如下: ```php function selectionSort($arr) { $len = count($arr); for ($i = 0...

    数据结构中的排序(直接插入,冒泡等算法)

    - **插入排序**:将一个或几个记录从无序序列中“插入”到已排序序列的适当位置。 - **交换排序**:如冒泡排序、快速排序,通过元素之间的交换将关键值较小的元素逐步移到前面。 - **选择排序**:每次从未排序部分...

    python-leetcode面试题解之第215题数组中的第K个最大元素-题解.zip

    可以创建一个最小堆,然后将数组中的元素依次添加到堆中,每次添加后都弹出堆顶元素,重复K次。这样,最后堆顶的元素就是第K大的元素。时间复杂度为O(n log k),对于K远小于n的情况,这是一种高效的方法。 下面是...

    C 语言通用 List 集合.zip

    通过一个迭代器变量,从头到尾依次访问每个元素。 6. **释放List**: 在不再使用List时,需要释放其占用的内存,避免内存泄漏。 在实现这些操作时,我们还需要注意以下几点: - **类型安全**:C语言没有泛型,...

    数据结构排序算法大总结 C++.doc

    根据提供的文档信息,本文将对数据结构中的排序算法进行详细解析,主要聚焦于几种常见的排序方法,包括直接插入排序、希尔排序以及冒泡排序,并基于C++语言实现这些算法。 ### 一、直接插入排序 #### 算法原理: ...

    拓扑排序java实现

    根据提供的部分代码,我们可以将其拆分为几个主要的功能模块来深入理解: ##### 1. 输入数据结构定义 - **bian**: 表示顶点的数量。 - **HashSet array**: 存储所有顶点值。 - **ArrayList list**: 存储各个顶点的...

    数据结构与程序设计20sorting.ppt

    本篇内容聚焦于几种基本排序算法的介绍,包括插入排序、选择排序以及希尔排序,并在Sortable_list类中提供了这些排序方法的实现框架。 首先,排序的定义是将一个包含n个节点的序列通过调整顺序,使得它们的关键字值...

    基本排序算法综合实验.docx

    * 实现了几个排序算法:InsertSort1、InsertSort2、ShellSort1 这些源程序代码是实验的核心部分,用于实现排序算法的实现。 三、InsertSort1 和 InsertSort2 算法 InsertSort1 和 InsertSort2 是两种直接插入排序...

    7-12算法RadixSort1

    在函数内部,主要逻辑分为以下几个步骤: 1. 分配两个整数数组 `start` 和 `end`,它们用于存储每个桶(队列)的头部和尾部索引。这些桶代表了不同数字可能出现的值范围。 2. 初始化链表结构,使每个元素的 `link` ...

    数据结构中的拓扑排序

    拓扑排序是对有向无环图的顶点进行线性排序的一种方法,使得对于图中的每条有向边 (u, v),顶点 u 都排在顶点 v 之前。换句话说,拓扑排序的结果是一个顶点的线性序列,其中如果存在一条从顶点 i 到顶点 j 的路径,...

    链表操作(创建、排序、插入、逆序递归)

    创建链表时,需要根据用户输入的元素数量`n`来动态分配内存,并逐个添加节点。代码实现如下: ```c list* creat(int n) { if (n ) { printf("Don't create linked list\n"); exit(0); } list* head = NULL, ...

    Java集合框架[汇编].pdf

    Java集合框架的核心是几个主要接口,包括Collection、List、Set和Map。Collection是最基础的接口,它是所有集合类的父接口。List和Set接口继承自Collection,分别代表有序可重复元素的集合和无序不重复元素的集合。...

    数据结构与算法

    - **希尔排序**:又称为缩小增量排序,是插入排序的一种更高效的改进版本,通过将比较的全部元素分为几个区域来提升效率。 - **快速排序**:采用分治法策略来把一个序列分为较小和较大的两个子序列,然后递归地排序...

    数据结构-线性表

    - 排序:按照一定的顺序重新排列表中的元素。 - 求线性表的长度:获取表中元素的数量。 ##### 3. 抽象数据类型定义 线性表可以通过抽象数据类型(ADT)来定义: ```plaintext ADT Linear_list { 数据对象:D = {ai |...

    (实验三)1

    实验内容涉及以下几个部分: 1. 创建线性表类:该类的存储结构基于链表实现。链表是一种非连续的存储结构,通过指针链接各个元素。线性表类包含了链表的初始化、插入、删除、查找以及输出等功能。 2. 自表首插入...

    数据结构C语言版

    根据给定的信息,我们可以提取和解释以下几个重要的数据结构和算法知识点: ### 1. **线性表合并(归并)** #### 算法描述 `MergeList` 函数用于合并两个已排序的线性表 `La` 和 `Lb`,并将结果存储在一个新的...

Global site tag (gtag.js) - Google Analytics