java容器---Comparable & Comparator】的更多相关文章

1.接口Comparable<T> API    参数类型:T ---可以与此对象进行比较的那些对象的类型 此接口强行对实现它的每个类的对象进行整体排序.这种排序被称为类的自然排序,类的compareTo()方法被称为它的自然比较方法. 实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序.实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器. Comparable也只有int compareTo(T objec…
我们经常用容器来存放元素,通常而言我们是不关系容器中的元素是否有序,但有些场景可能要求容器中的元素是有序的,这个时候用ArrayList  LinkedList  Hashtable HashMap HashSet 这些容器本身存放的时候就没有办法做到了,这个时候我们有两种思路:第一种思路:对刚刚我们提到的容器类的元素从新排序后存放,就是后面我们要介绍的利用Collections.sort 方法进行排序,第二种思路:是容器在添加元素的时候就进行大小的比较从而来保证元素的排序.下面我开始来详细介绍…
Comparable & Comparator 都是用来实现集合中元素的比较.排序的: Comparable 是在集合内部定义的方法实现的排序: Comparator 是在集合外部实现的排序: 所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法. Comparator位于包java.util下,而Comparable位于包java.lang下 Comparable 是一个对象本身就已经支持自比较所需要实现的接口(如 Strin…
一.使用情景 1.  调用Arrays.sort()方法或Collections.sort()方法对自定义类的对象排序 以Arrays.sort()为例.假定有如下自定义的Person类 1 public class Person { 2 3 private String name; 4 private Integer age; 5 6 public Person() {} 7 8 public Person(String name, Integer age) { 9 this.name = n…
Java中Comparable和Comparator接口区别分析 来源:码农网 | 时间:2015-03-16 10:25:20 | 阅读数:8902 [导读] 本文要来详细分析一下Java中Comparable和Comparator接口的区别,两者都有比较的功能,那么究竟有什么区别呢,感兴趣的Java开发者继续看下去吧.Comparable 简介Comparable 是排序接口.若一个类实现了Comparab 本文要来详细分析一下Java中Comparable和Comparator接口的区别,…
Java 中 Comparable 和 Comparator 比较 目录: Comparable Comparator Comparable 和 Comparator比较 第二个例子 之 Comparator 第二个例子 之 Comparable Comparable  Comparable 简介 Comparable 是排序接口. 若一个类实现了Comparable接口,就意味着“该类支持排序”.  即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的…
前面我们说TreeMap和TreeSet都是有顺序的集合,而顺序的维持是要靠一个比较器Comparator或者map的key实现Comparable接口.      既然说到排序,首先我们不用去关心什么是Strategy设计模式,也不用关心它为了解决什么问题而存在,我们直接从排序开始看.   1.排序        假设我们有一个int数组需要排序,想一想应该怎么实现,当然首先要有一个int数组,然后呢,然后需要有一个可以实现排序的方法或类,怎么实现排序呢,说到排序算法可能很多人都会什么快速.冒…
转自http://www.cnblogs.com/skywang12345/p/3324788.html 本文,先介绍Comparable 和Comparator两个接口,以及它们的差异:接着,通过示例,对它们的使用方法进行说明. Comparable 简介 Comparable 是排序接口. 若一个类实现了Comparable接口,就意味着“该类支持排序”.  即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”,则该Li…
原文见: 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…
Java的Comparator和Comparable当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序. 1.Comparable简介: Java.lang.Comparable是排序接口.若一个类实现了Comparable接口,就意味着该类支持排序.实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序. 此外,实现此接口的对象可以用作有…
原文地址https://segmentfault.com/a/1190000005738975 实体类:java.lang.Comparable(接口) + comareTo(重写方法),业务排序类 java.util.Comparator(接口) + compare(重写方法). 这两个接口我们非常的熟悉,但是 在用的时候会有一些不知道怎么下手的感觉,现在用案例进行总结,消除对这个知识点的理解盲区(个人的理解,如果有错误 请多多指教).一,在实际的需求中,我们需要根据对象的各种属性(标题,时间…
[本文转自]http://www.cnblogs.com/skywang12345/p/3324788.html Comparable 简介 Comparable 是排序接口. 若一个类实现了Comparable接口,就意味着“该类支持排序”.  即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”,则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序. 此外,“实现Co…
Java基础之comparator和comparable的区别以及使用 1: 区别:  .Comparable类需要实现此接口,定义在类内,不利于扩展 2 .Comparator更灵活,可以随时自定义比较规则    使用:       2.2. Collections.sort(List<T> list,Comparator<? super T> c); Comparable: class Student implements Comparable<Student>{…
comparable.comparator接口 说明 Java中的对象,正常情况下,只能进行比较:== 或 != .不能使用 > 或 < 的,但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小. 如何实现?使用两个接口中的任何一个:Comparable 或 Comparator Comparable接口的使用举例: 自然排序 像String.包装类等实现了Comparable接口,重写了compareTo(obj)方法,给出了比较两个对象大小的方式. 像String.…
我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角度对Java中强大的容器类库做了一个简单总结而第二篇专门针对容器类库中的Collection部分进行了总结.这篇博文将对容器类库中的Map部分进行一个整理总结. 一.初识Map Map:一组成对的“键值对”对象,允许你使用键来查找值.(注:Map其实是将键与值形成的二元组按照一维线性的方式组织起来,…
java容器类库的简化图: (虚线框表示接口, 实线框表示普通的类, 空心箭头表示特定的类实现了接口, 实心箭头表示某个类可以生成箭头所指的类对象) 继承Collection的主要有Set 和 List. List: ArrayList    内部实现是用数组, 随机访问速度快, 删除或插入元素速度慢. LinkedList  内部实现是用链表, 随机访问速度慢,删除和插入元素相对较快. 平时最佳的做法可能是将ArrayList作为默认首选,只有你需要使用额外的功能,或者因为经常从表中插入或删除…
一.ArrayList 长度可变数组,类似于c++ STL中的vector. 元素以线性方式连续存储,内部允许存放重复元素. 允许对元素进行随机的快速访问,但是向ArrayList中插入和删除元素的速度较慢. ArrayList是非线程安全的,若要成为线程安全,可以使用:List list=Collections.synchronizedList(new ArrayList()); 数组进行扩容时,会将老数组中的元素重新拷贝一份到新的数组中,每次数组容量的增长大约是其原容量的1.5倍. 这种操作…
思考为什么要引入容器这个概念? Java有多种方式保存对象(应该是对象的引用),例如使用数组时保存一组对象中的最有效的方式,如果你想保存一组基本类型的数据,也推荐使用这种方式,但大家知道数组是具有固定尺寸的,你必须事先知道你要需要多少个对象.但是在一般的情况中,你在写程序中并不知道将需要多少个对象,或者是否需要更加复杂的方式来存储对象,因此数组尺寸固定很不爽! 为了解决上述问题,引入了容器的概念.容器提供了完善的方法来保存对象,你可以使用这些工具来解决数量惊人的问题.Java容器类可以自动调整自…
Comparable & Comparator 都是用来实现集合中元素的比较.排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法. Comparator位于包java.util下,而Comparable位于包   java.lang下 Comparable 是一个对象本身就已经支持自比较所需要实现的接口(如 St…
转自:http://blog.csdn.net/zccst/article/details/5092920 java.lang.Comparable 接口 作者: zccst java.lang.Comparable 接口定义的 compareTo() 方法用于提供对其实现类的对象进行整体排序所需要的比较逻辑. 实现类基于 compareTo() 方法的排序被称为自然排序.而 compareTo() 方法的排序被称为它的自然排序.具体的排序原则可由实现类根据需要而定.用户在重写 compareT…
Java容器指的是List,Set,Map这些类.由于翻译的问题,问到集合,Collection这些指的都是它们几个. List ArrayList 随机访问快 LinkedList 插入删除快 这个好理解,array嘛就是数组,随机访问快.link嘛就是链表,当然是插入删除快了. Set 每个元素只能放一次 HashSet 使用散列 TreeSet 使用红黑树,会对元素排序,接口是SortedSet.初始化TreeSet时可以传入Comparator对象的实现做为排序函数 LinkedHash…
Java 中容器框架的内容可以分为三层: 接口(模型), 模板和具体实现. 在开发中使用容器正常的流程是,首先根据需求确定使用何种容器模型,然后选择一个符合性能要求的容器实现类或者自己实现一个容器类.例如: // 这是我们最经常用的方式了 List stringList = new ArrayList<String>(); 这种方式的好处在于: 模型与实现分开可以复用一部分实现类: 屏蔽了实现逻辑的细节,可以更专注模型的操作: 接口为操作添加了约束,避免误操作. 上面所说的模型在容器框架中对应…
前言 通常,我们总是在程序运行过程中才获得一些条件去创建对象,这些动态创建的对象就需要使用一些方式去保存.我们可以使用数组去存储,但是需要注意数组的尺寸一旦定义便不可修改,而我们并不知道程序在运行过程中会产生多少对象,于是数组的尺寸便成了限制.Java实用类库还提供了一套的容器类来解决这个问题,基本类型为:List .Set.Queue和Map.这些对象类型也称为集合类,但是由于Java类库使用了Collection这个名字来指代该类库中的一个特殊子集,所以使用术语"容器"来称呼它们.…
本篇根据<Java编程思想> 第11章 持有对象 整理,总结Java容器框架中常用集合类及接口的特点及使用场景. (一)总结 1)数组将数字与对象联系起来:可以保存基本类型的数据:一旦生成,容量不能改变: 2)Collection保存单一的元素,Map保存相关联的键值对:不能持有基本类型:添加更多元素时,自动调整尺寸: 3)List接口继承自Connection接口,同数组一样,也建立数字索引与对象的关联,数组和List都是排好序的容器:ArrayList和LinkedList都实现List接…
记录Java容器中的常见概念和原理 参考: https://github.com/wangzhiwubigdata/God-Of-BigData#三Java并发容器 https://blog.csdn.net/justloveyou_/article/details/78653929 基础容器 ArrayList(动态数组).LinkedList(带头结点的双向链表) ArrayList public class ArrayList<E> extends AbstractList<E&g…
结合一些文章阅读源码后整理的Java容器常见知识点.对于一些代码细节,本文不展开来讲,有兴趣可以自行阅读参考文献. 1. 思维导图 各个容器的知识点比较分散,没有在思维导图上体现,因此看上去右半部分很像类的继承关系. 2. 容器对比 类名 底层实现 特征 线程安全性 默认迭代器实现(Itr) ArrayList Object数组 查询快,增删慢 不安全,有modCount 数组下标 LinkedList 双向链表 查询慢,增删快 不安全,有modCount 当前遍历的节点 Vector Obje…
为什么要使用集合 当我们需要保存一组类型相同的数据的时候,我们应该是用一个容器来保存,这个容器就是数组,但是,使用数组存储对象具有一定的弊端, 因为我们在实际开发中,存储的数据的类型是多种多样的,于是,就出现了"集合",集合同样也是用来存储多个数据的. 数组的缺点是一旦声明之后,长度就不可变了:同时,声明数组时的数据类型也决定了该数组存储的数据的类型:而且,数组存储的数据是有序的.可重复的,特点单一. 但是集合提高了数据存储的灵活性,Java 集合不仅可以用来存储不同类型不同数量的对象…
在[Java心得总结五]Java容器上——容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器做一个着重的探索与总结. Collection:一个独立元素的序列,这些元素都服从一条或多条规则.(注:Collection其实就是将一组数据对象按照一维线性的方式组织起来)List必须按照插入的顺序保存元素,而set不能有重复元素.Queue按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序…
一.前言 在Java集合框架里面,各种集合的操作很大程度上都离不开Comparable和Comparator,虽然它们与集合没有显示的关系,但是它们只有在集合里面的时候才能发挥最大的威力.下面是开始我们的分析. 二.示例 在正式讲解Comparable与Comparator之前,我们通过一个例子来直观的感受一下它们的使用. 首先,定义好我们的Person类 class Person { String name; int age; public Person(String name, int ag…
3)Java容器   Java的集合框架核心主要有三种:List.Set和Map.这里的 Collection.List.Set和Map都是接口(Interface). List lst = new ArrayList(); 这是我们平常经常使用的创建一个新的List的语句,在这里, List是接口,ArrayList才是具体的类.     常用集合类的继承结构如下:Collection<--List<--VectorCollection<--List<--ArrayListCol…