集合的比较器

这个是现学现用的。

public class Student {
private String name;

private int age;

public Student(int age) {
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;
}

@Override
public boolean equals(Object obj) {
if(obj instanceof Student){
obj = (Student) obj;
return ((Student) obj).getName().equals(getName())? true:false;
}
return false;

}

}

//这个很重要  这个就是排序的比较器  在这里是根据学生的年龄来排序的

import java.util.Comparator;

/**
* 比较器
* @author DELL
*
*/
public class StudentCompartor implements Comparator<Student>{

@Override
public int compare(Student o1, Student o2) {
// TODO Auto-generated method stub
if(o1.getAge()>o2.getAge()){ //升序
return 1;
}
return -1;
}

}

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

public class CollectionCompareDemo {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
list.add(new Student(20));
list.add(new Student(30));
list.add(new Student(10));
list.add(new Student(40));

Collections.sort(list, new StudentCompartor());  //排序 传入要排序的集合和比较器
Iterator<Student> iterator = list.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next().getAge());
}
}
}

输出的结果是:

10
20
30
40

时间: 2024-10-10 04:10:50

集合的比较器的相关文章

Java Map集合利用比较器Comparator根据Key和Value的排序

TreeMap排序 根据Key进行排序 Map的根据key排序需要用到TreeMap对象,因为它是默认按照升序进行输出的,可以使用比较器compareTo对它进行降序排序,Comparator可以对集合对象或者数组进行排序的比较器接口,实现该接口的public compare(T o1,To2)方法即可实现排序,该方法主要是根据第一个参数o1,小于.等于或者大于o2分别返回负整数.0或者正整数,若是按照升序可以直接省略比较器代码Map<String, String> treeMap = new

编写高质量代码改善C#程序的157个建议——建议30:使用LINQ取代集合中的比较器和迭代器

建议30:使用LINQ取代集合中的比较器和迭代器 LINQ提供了类似于SQL的语法来实现遍历.筛选与投影集合的功能. static void Main(string[] args) { List<Salary> companySalary = new List<Salary>() { new Salary() { Name = "Mike", BaseSalary = 3000, Bonus = 1000 }, new Salary() { Name = &qu

java课堂笔记------集合api

Collection c = new ArrayList(); * boolean add(E e) * 将当前集合中添加给定的元素 * 若成功添加则返回true c.add("one"); c.add("two"); * int size() * 获取当前集合中的元素个数 c.size(); * boolean isEmpty() * 判断当前集合是否不包含任何元素 * 当集合中没有元素时返回true boolean isEmpty = c.isEmpty();

JavaSE(八)之集合练习一

前面把Collection家族给学习完毕了,接下来我们通过几个练习来巩固前面的知识. 一.产生10个1-20之间的随机数要求随机数不能重复 import java.util.HashSet; import java.util.Random; public class Test1 { /** * 需求:编写一个程序,获取10个1至20的随机数,要求随机数不能重复.并把最终的随机数输出到控制台. * * 分析: * 1,有Random类创建随机数对象 * 2,需要存储10个随机数,而且不能重复,所以

java集合排序方法sort的使用

转自  http://blog.csdn.net/a1165117473/article/details/6965652 /** To change this template, choose Tools | Templates* and open the template in the editor.*/ package com.city.test; import java.util.Arrays;import java.util.Comparator;/**** @author LiuB*/

黑马程序员-Java基础-集合框架-TreeSet、二叉树、泛型

第一讲 TreeSet 1.  概述 TreeSet可以对Set集合中的元素进行排序,按照自然顺序排. 2.  演示代码 输出结果: 总结:TreeSet会对元素进行自然排序,大写排在小写前面. 第二讲  TreeSet存储自定义对象 1. 概述: 将自定义对象存储到TreeSet集合中. 2. 思路: 自定义学生类,并将学生对象存储到TreeSet中,在存储过程中按照年龄排序. 3. 练习:往TreeSet集合中存储自定义对象(学生),并按照学生年龄进行排序 小结: 自定义对象需要重写Comp

02.C#集合

1.集合接口与集合类型 (1)集合的命名空间 大多数集合类都可以在System.Collections和System.Collections.Generic名称空间中找到.泛型集合位于System.Collections.Generic名称空间中:专用于特定类型的集合类位于System.Collections.Specialized名称空间中:线程安全的集合位于System.Collections.Concurrent名称空间中. (2)集合接口介绍 1.IEnumerable与IEnumera

C#集合 -- Equality和Order插件

在前面的文章C#相等性比较和C#排序比较中,我已经叙述了类型相等,类型哈希,和类型比较的.NET标准协议.实现了这些协议的类型在一个字典或者列表中也可以正常工作.但是需要注意的是: 只有当类型的Equals方法和GetHashCode方法返回有意义的结果时,该类型才可以作为Dictionary或Hashtable的键 只有当类型实现了IComparable/IComparable<T>才可以作为排序字典或排序列表的键 一个类型的默认相等实现或比较实现典型地反映了该类型最"自然&quo

java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)

/*TreeSet * treeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序 * 所以输出的数据是经过排序的数据 * 注:compareTo方法返回值有:负数,零,正数.分别表示小于,等于,大于 * 对于存入自定义的对象元素,要重写元素的compareTo(Object obj)方法 * 元素定义时,需要实现Comparable接口 * */ 1 import java.util.Iterator; 2 import java.util.Tr