对集合使用Comparator】的更多相关文章

1 import java.util.Comparator; 2 import java.util.PriorityQueue; 3 4 /** 5 * 对集合使用Comparator,不改变对象的自然顺序 6 * @author Administrator 7 * 8 */ 9 public class PriMsgQDemo { 10 public static void main(String[] args) { 11 Message m; 12 //自然顺序排列 13 PriorityQ…
在Java集合中,如果要比较引用类型泛型的List,我们使用Comparator和Comparable两个接口. Comparable接口 -- 默认比较规则,可比较的 实现该接口表示:这个类的实例可以比较大小,可以进行自然排序 定义了默认的比较规则 其实现类需要实现comparaTo()方法 comparaTo()方法返回整数表示大,负数表示小,0表示相等 Comparator接口 -- 临时比较规则,比较工具接口 用于定义临时比较规则,而不是默认比较规则 其实现类需要实现compara()方…
Java 排序 Compare  Comparator接口 Comparable接口 区别 在Java中使用集合来存储数据时非常常见的,集合排序功能也是常用功能之一.下面看一下如何进行集合排序,常用的方法有: Comparator和Comparable Comparator接口 使用步骤: 新建比较类, 实现Comparator接口, 重写compare方法, package sort;  import java.util.Comparator;  public class LuckBoyCom…
Java Comparator和Comparable 步骤 1 : Comparator 假设Hero有三个属性 name,hp,damage 一个集合中放存放10个Hero,通过Collections.sort对这10个进行排序 那么到底是hp小的放前面?还是damage小的放前面?Collections.sort也无法确定 所以要指定到底按照哪种属性进行排序 这里就需要提供一个Comparator给定如何进行两个对象之间的大小比较 //Hero.java package charactor;…
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; class Teacher_Main { public static void main(String[] args) { ArrayList<Teacher> teacherList = new ArrayList<Teacher>(); teacherList.add(new Teacher("污…
千里之行,始于足下.把别人的变成自己,再把自己的分享给别人,这也是一次提升的过程.本文的目的是以一篇文章从整体把握集合体系又不失一些细节上的实现,高手路过. 集合的作用与特点 Java是一门面向对象语言,数据多了用对象封装存储(比如,人有姓名.年龄.性别等数据信息,我们就抽象一个Person对象来封装存储),对象多了又用什么来存储呢?集合,集合就是用来存储对象的. 集合的特点就是适用于存储对象而且可以存储不同类型的对象,集合的长度是可变的. 集合框架图 个模块来学习: 1.Collection集…
练习一: 创建一个Set集合,保存用户输入的数据 具体代码实现如下面代码中的testSet()方法. 知识点: Set集合的基本特征是元素不允许重复.HashSet不保存元素顺序,LinkedHashSet用链表保持元素的插入顺序,TreeSet可定制排序规则. HashSet的底层是用HashMap实现的,即HashMap<key, value>中把所有value置为null,key就组成了一个Set HashSet把元素的hashCode值作为地址索引来存储元素,可以实现类似根据数组下标索…
1.集合自定义排序实现 对List集合的自定义排序想必大家都知道要使用如下的方式,通过实现Comparator接口并实现compare方法来实现. /** * * @方法名 changeChain * @描述 改变请求链 * @参数 * @返回类型 void * @作者 cymiao */ public static void changeChain(Class<? extends Chain> type){ List<? extends Chain> list = Dynamic…
千里之行,始于足下.把别人的变成自己,再把自己的分享给别人,这也是一次提升的过程.本文的目的是以一篇文章从整体把握集合体系又不失一些细节上的实现,高手路过. 集合的作用与特点 Java是一门面向对象语言,数据多了用对象封装存储(比如,人有姓名.年龄.性别等数据信息,我们就抽象一个Person对象来封装存储),对象多了又用什么来存储呢?集合,集合就是用来存储对象的. 集合的特点就是适用于存储对象而且可以存储不同类型的对象,集合的长度是可变的. 集合框架图 个模块来学习: 1.Collection集…
Java集合框架 :接口:Collection.List .Set. Map:实现类:ArrayList.LinkedList.Vector.HashSet.TreeSet.HashMap.HashTable.TreeMap java中集合类位于java.util包下,与下面四个接口有关Collection,List,Set,Map接口. Collection接口 无索引,即无get方法 List接口 元素可重复.可以存放null值.有索引 Set接口 元素不可重复,无索引 ArrayList实…
Set(集合)接口 简介 同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了.     元素是有序的,元素值唯一,不允许重复. HashSet集合 HashSet是Set接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的. 当向HashSet集合中添加一个对象时,首先会调用该对象的hashCode()方法来确定元素的存储位置,然后再调用对象的equals()方法…
一.集合总结 集合:Collection体系.Map体系. Collection体系:单列集合的共性操作规则. List:列表,可以重复,有下标,拥有特有的迭代器ListIterator. ArrayList:底层是可变数组.增删慢,查询快.不安全 LinkedList:底层是链表结构,增删快,查询慢.不安全.有头和尾,特有的头尾操作的方法.可以模 拟数据结构(堆栈.队列). Vector:底层是可变数组,增删,查询都慢.安全.被ArrayList代替. Enumeration:它是古老的迭代器…
5.集合类 集合类的由来: 对象用于封装特有数据,对象多了须要存储:假设对象的个数不确定.就使用集合容器进行存储. 集合容器由于内部的数据结构不同,有多种详细容器.不断的向上抽取,就形成了集合框架. 集合的特点: 1..用于存储对象的容器. 2.集合的长度是可变的 3.集合中不能够存储基本数据类型值 集合框架的构成及分类: 集合和数组的差别: 1.长度差别:数组的长度固定:集合长度可变 2.内容差别:数组存储的是同一种类型的元素.而集合能够存储不同类型的元素 3.元素的数据类型差别:数组能够存储…
一.集合总结 集合:Collection体系.Map体系. Collection体系:单列集合的共性操作规则. List:列表,可以重复,有下标,拥有特有的迭代器ListIterator. ArrayList:底层是可变数组.增删慢,查询快.不安全 LinkedList:底层是链表结构,增删快,查询慢.不安全.有头和尾,特有的头尾操作的方法.可以模 拟数据结构(堆栈.队列). Vector:底层是可变数组,增删,查询都慢.安全.被ArrayList代替. Enumeration:它是古老的迭代器…
如果加入TreeSet和TreeMap的元素没有实现comprable中的compareTo()方法,那么会报错"treeset cannot be cast to java.lang.Comparable". 要解决这个问题有两种方法: (1)让元素自身具有比较性:可以实现Comparable接口,实现compareTo()方法: (2)让集合自身具有比较性:可以定义比较器,即让集合实现Comparator接口,然后实现compare()方法: 方法一: 因此需要对元素类型实现Com…
集合分为两大类: Collection集合: 单个存储 Map集合: 按<键,值>对的形式存储,  <员工姓名,工资> Collection类关系图 Collection常见方法 boolean add(E e) 在当前集合中添加元素e boolean addAll(Collection<? extends E> c) 把参数集合c中的所有元素都添加到当前集合中 void clear() 清空集合中所有的元素. boolean contains(Object o) 判断…
一.前言 在Java集合框架里面,各种集合的操作很大程度上都离不开Comparable和Comparator,虽然它们与集合没有显示的关系,但是它们只有在集合里面的时候才能发挥最大的威力.下面是开始我们的分析. 二.示例 在正式讲解Comparable与Comparator之前,我们通过一个例子来直观的感受一下它们的使用. 首先,定义好我们的Person类 class Person { String name; int age; public Person(String name, int ag…
import java.util.*; public class Person implements Comparable<Person>//使Person的属性具有比较性 { private String name; private int age; public Person(String name,int age)//初始化构造函数 { this.name = name; this.age = age; } public void set(String name,int age)//重新…
package javastudy; import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; public class Ptext { public static void main(String[] args) { // TODO Auto-generated method stub //关于comparable的用法:以Person为例进行排序: /**用法声明 * 1.建立一个Per…
1. 比较器排序(定制排序) 前面我们说到的TreeSet的自然排序是根据集合元素的大小,TreeSet将它们以升序排列. 但是如果需要实现定制排序,比如实现降序排序,则要通过比较器排序(定制排序)实现. 比较器排序是通过Comparator接口帮助的,这个接口包含一个方法int compare(T o1, T o2)方法,该方法用于比较o1和o2的大小: 如果方法返回正整数,则表明o1 大于 o2 如果方法返回0,则表明o1 等于 o2 如果方法返回负整数,则表明o1 小于 o2 int co…
原文见: http://www.cnblogs.com/sunflower627/p/3158042.html 1. Comparator 和 Comparable 相同的地方 他们都是java的一个接口, 并且是用来对自定义的class比较大小的, 什么是自定义class: 如 public class Person{ String name; int age }. 当我们有这么一个personList,里面包含了person1, person2, persion3....., 我们用Coll…
package TreeSetTest; import java.util.Iterator; import java.util.TreeSet; import javax.management.RuntimeErrorException; /* 可以对set集合中的元素进行排序,其底层的数据结构是二叉树, 保证元素唯一性的依据是compareTo和return 0; TreeSet排序的第一种方式 让元素自身具备比较性 元素需要实现Comparable接口,覆盖compareTo方法 这种方式…
为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 数组和集合类同是容器,有何不同? 数组虽然也可以存储对象,但长度是固定的,集合长度是可变的,数组中可以存储基本数据类型,集合只能存储对象 集合类的特点 集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象. collection 中有两个常见的接口,如一个是 List 另一个是Set List中有ArrayList,LinkedList,V…
文章内容参考博客:https://www.cnblogs.com/xujian2014/p/5215082.html 1.Comparable Comparable是排序接口,当一个类实现了Comparable接口后,就以为着该类支持排序.实现了Comparable接口的类,其组成的数组和列表就可以通过Collections的工具进行自动排序. 而实现了Comparable接口的对象也可以用作有序映射(LinkedHashMap)中的键,或者有序集合中的集合,无序指定比较器Comparator.…
今天在做导入功能时,看到一个感觉很好的去重算法,特分享给大家看看: 其原理利用了以下几点: 1.TreeSet里面不会有重复的元素,所以当把一个List放进TreeSet里面后,会自动去重 2.TreeSet去重也是有条件的,它依靠放入其中的元素的排序规则,所以放入其中的元素要有一个自定义的排序规则(此处表述不是很清楚,欢迎指正) 下面开始看好戏: 原本List<Person> persons 里面有3个元素: List<Person> persons = new ArrayLis…
一.概述Comparable和Comparator都是用来实现集合中元素的比较.排序的.Comparable是在集合内部定义的方法实现的排序,位于java.lang下.Comparator是在集合外部实现的排序,位于java.util下. 首先来看一下Comparable的定义: package java.lang; import java.util.*; public interface Comparable<T> { //若x.compareTo(y) <0,则x<y;若x.c…
TreeMap排序 根据Key进行排序 Map的根据key排序需要用到TreeMap对象,因为它是默认按照升序进行输出的,可以使用比较器compareTo对它进行降序排序,Comparator可以对集合对象或者数组进行排序的比较器接口,实现该接口的public compare(T o1,To2)方法即可实现排序,该方法主要是根据第一个参数o1,小于.等于或者大于o2分别返回负整数.0或者正整数,若是按照升序可以直接省略比较器代码Map<String, String> treeMap = new…
comparable接口     是主要是用来自定义类存储在主要是TreeSet,TreeMap(键)集合中存储时,自定通过实现这种接口得到自然排序的功能. comparator 接口  是主要是用来自定义类存储在主要是TreeSet,TreeMap(键)集合中存储时,自定通过实现这种接口得到自定义排序的功能. 区别: 1 comparable在lang包    comparator 在util包 2.实现comparable要重写compareTo方法    comparator要重新comp…
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; //comparator.comparable的用法(按照要求将map集合的键值对进行顺序输出) import java.util.List; public class Test { public static <T> void sop(T t) { System.out.println(t); } public stat…
大家对java接口Comparator和Comparable都不陌生,JDK8里面Comparable还和以前一样,没有什么改动:但是Comparator在之前基础上增加了很多static和default方法.本文主要结合JDK的stream编程,学习下Comparator.阅读本文需要一些前置知识,可以参考如下文章. JDK8新特性:接口的静态方法和默认方法 http://blog.csdn.net/aitangyong/article/details/54134385 JDK8新特性:函数式…