Comparable 自然排序 Comparable 在 java.lang 包下,是一个接口,内部只有一个方法 compareTo(): Comparable 可以让实现它的类的对象进行比
该文介绍了Java中的自然排序和比较器排序两种方式,并举例说明了使用这两种方式进行排序的具体实现。同时,也探讨了Comparator接口在定制排序中的实现和应用。
粗线框表示最经常使用的实体类。 点线的箭头表示实现了这个接口。 实线箭头表示类能够制造箭头所指的那个类的对象。
一个不包含重复元素的collection。更确切地讲,Set不包含满足e1.equals(e2)的元素对 e1和e2,并且最多包含一个null元素。
迭代对于我们搞Java的来说绝对不陌生。我们常常使用JDK提供的迭代接口进行Java集合的迭代。
Set:注重独一无二的性质,该体系集合可以知道某物是否已近存在于集合中,不会存储重复的元素
引用到堆上同一个对象的两个引用是相等的。如果对两个引用调用hashCode方法,会得到相同的结果,如果对象所属的类没有覆盖Object的hashCode方法的话,hashCode会返回每个对象特有的序号(java是依据对象的内存地址计算出的此序号),所以两个不同的对象的hashCode值是不可能相等的。
参考地址:https://blog.csdn.net/qq_33642117/article/details/52040345
今天这一篇把之前没有搞懂的TreeSet中的比较搞得非常的清楚,也懂得了它的底层实现。希望博友提意见! 一、Set接口 1.1、Set集合概述 Set集合:它类似于一个罐子,程序可以依次把多个对象 “丢进” Set 集合,而 Set 集合通常不能记住元素的添加的顺序,也就是说Set 集合是无序的。 Set 集合与 Colleaction 基本相同,没有提供额外的方法,实际上 Set 就是 Collection,只是行为略有不同(Set 不允许包含重复元素)。 1.2、Set类型集合特点
一、Set接口 Set 接口与 List 接口相比没有那么多操作方法,比如: 1、List 接口能直接设置或获取某个元素的值,而Set接口不能。 2、List 接口能直接在指定位置删除、增加元素,而Set接口不能。 3、List 接口有 listIterator 方法,可以获得 ListIterator 对象,而 Set 接口不能。Set 只能通过 iterator 迭代的方式获取元素。 对比一下Set接口和Collection接口就知道,其实Set接口仅仅对Collection所有方法进行继承而已,而自己
1.基本介绍: 集合就是存放对象的,他比数组好的一点就是他一开始不清楚自己长度 容器一般是分为很多种的,很多的容器在一起然后进过断的抽象和抽取就成了一个体系,我们称之为集合框架 我们看体系首先是看顶层的容器,他是底层的容器都有的特性,然后在逐步求精 最顶层的我们称之为collection 在util包中的 在collection中分为两个比较常用的子接口分别是list和set。 list是类似于数组的那种,也就是集合元素可重复,有序有脚标。 set则为无序的,所以集合元素不可重复,不可脚标查找 以下是
因此在添加自定义对象想达到想要的去重效果就要重写HashCode()与equals()方法
前面几篇把集合中的知识大概都详细的说了一遍,但是我觉得还是要总结一下,这样的话,可以更好的理解集合。 一、Collection接口 首先我们要一张图来说明: Collection接口,它是集合的顶
add(E e) 确保此 collection 包含指定的元素(可选操作)。
1、所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。
Set 集合,它类似于一个罐子 , 程序可以依次把多个对象"丢进" Set 集合,而 Set集合通常不能记住元素的添加顺序 。 Set 集合与 Collection 基本相同,没有提供任何额外的方法。实际上 Set 就是 Collection , 只是行为略有不同( Set不允许包含重复元素) 。
一、集合: 集合是Java API所提供的一系列类的实例,可以用于动态存放多个对象 为什么要使用集合?数组的长度是固定的,存满了就不能存了。集合可以存储不同类型的对象,而且它的容量可以随着对象数量的增加,自动扩大。 ----------------------------------------------------------------------------------------------------------------------------------- 二、List集合 List:存储
(2)ArrayList(int initialCapacity)构造一个具有指定初始容量的空列表。
Set接口也是Collection的子接口,Set接口没有提供额外的方法。Set集合支持的遍历方式也和Collection集合一样,使用foreach和Iterator遍历。
假设Object为User,此处User类中省略getting/setting以及相关构造方法。
Comparable和Comparator Comparable 简介 Comparable 是排序接口。 若一个类实现了Comparable接口,就意味着“该类支持排序”。 即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”,则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序。 此外,“实现Comparable接口的类的对象”可以用作“有序映射(如TreeMap)”中的键或
概述 Set集合类似于一个罐子,程序可以依次把多个对象“丢进”Set集合,而Set集合通常不能记住元素的添加顺序。实际上Set就是Collection只是行为略有不同(Set不允许包含重复元素)。 Set集合不允许包含相同的元素,如果试图把两个相同元素加入同一个Set集合中,则添加操作失败,add()方法返回false,且新元素不会被加入。
上一篇:Java--集合类之Vector、BitSet、Stack、Hashtable 集合(Collection):一组单独的元素,通常应用了某种规则。在这里,一个 List(列表)必须按特定的顺序容纳元素,而一个Set(集)不可包含任何重复的元素。相反,“包”(Bag)的概念未在新的集合库中实现,因为“列表”已提供了类似的功能。 映射(Map):一系列“键-值”对(这已在散列表身上得到了充分的体现)。从表面看,这似乎应该成为一个“键-值”对的“集合”,但假若试图按那种方式实现它,就会发现实现过程相当笨拙
Set集合完整定义 public interface Set extends Collection
List为列表,中在列表中的对象是由顺序的排序的,并且是有重复的对象。 简单为:有序,有重复。
存储对象可以使用数组 (基本数据类型 & 引用数据类型) 和集合 (引用数据类型),用数组存储对象的弊端有:一旦创建,其长度不可变;数组中真正存储的对象个数不可知,除非自定义类。使用集合可以解决这些问题。
ArrayList和LinkedList的异同? 答:二者都线程不安全,相对线程安全的Vector,执行效率高。此外,ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。对于新增和删除操作add(特指插入)和remove,LinkedList比较占优势,因为ArrayList要移动数据。
Set集合中的方法用法并不难,可以参照前面Collection、List集合的讲解,对照学习,我们重点讲解Set中一些重要的特点。
四、集合框架 1:String类:字符串(重点) (1)多个字符组成的一个序列,叫字符串。 生活中很多数据的描述都采用的是字符串的。而且我们还会对其进行操作。 所以,java就提供了这样的一个类供我们使用。 (2)创建字符串对象 A:String():无参构造 **举例: String s = new String(); s = "hello"; sop(s); B:String(byte[] bys):传一个字节数组作为参数 ***** **举例 byt
默认情况下:扩容为原来的 1.5 倍,同时需要将原有的数组中的数据复制到新的数组中。 结论:建议开发中使用带参的构造器:ArrayList list = new ArrayList(int capacity)
Set接口 前面已经简绍过Set集合,它类似于一个罐子,一旦把对象'丢进'Set集合,集合里多个对象之间没有明显的顺序。Set集合与Collection基本上完全一样,它没有提供任何额外的方法。 Set集合不容许包含相同的元素,如果试图把两个相同元素加入到同一个Set集合中,则添加操作失败,add方法返回false,且新元素不会被加入。 Set判断两个对象是否相同不是使用==运算符,而是根据equals方法。也就是说,只要两个对象用equals方法比较返回true,Set就不会接受这两个对象
HashSet 是 Set 接口的实现类,底层数据结构是哈希表。HashSet 是线程不安全的(不保证同步)。优点:添加、删除、查询效率高;缺点:无序
常见的几种数据结构: * 1.堆栈:先进后出 * 2.队列:先进先出 * 3.数组:查找快,增删慢 * 4.链表:查找慢,增删快 import java.util.LinkedList;
1.Set 上一篇,我们介绍Java中的List集合。本篇,让我们继续学习,来了解下Set集合; Set继承于Collection接口,是一个不允许出现重复元素,并且无序的集合,主要有HashSet和TreeSet两大实现类。 在判断重复元素的时候,Set集合会调用hashCode()和equal()方法来实现。 HashSet是哈希表结构,主要利用HashMap的key来存储元素,计算插入元素的hashCode来获取元素在集合中的位置; TreeSet是红黑树结构,每一个元素都是树中的一个节点,插入的元素
1.位置 Comparable 位于 java.lang,我们都知道 java.lang包可以说是 java体系中基础包,有 ClassLoader、Class、Object、基本类型等 Comparator 位于 java.util,也就是 java 自带的类库,包括一些常用的集合类、strem、function
[TOC] Set集合 描述:Set集合概述和特点包含没有重复元素的集合。 public interface Set<E> extends Collection<E> Set集合特点: 无索引 不可
[TOC] Set集合 描述:Set集合概述和特点包含没有重复元素的集合。 public interface Set<E> extends Collection<E> Set集合特点: 无索引 不
《Java集合详解系列》是我在完成夯实Java基础篇的系列博客后准备开始写的新系列。
-集合结构只要发生改变,迭代器必须重新获取,如果还是用的之前的迭代器,就会出现异常java.util.ConcurrentModificationException
本文介绍了Guava库中的通用对象方法,包括equals、hashCode、toString、compareTo等方法,以及如何使用这些方法。
注:Collection在使用泛型之前,可存放Object的所有子类,在使用泛型之后,只能存某个具体的类型。
常用的就是ArrayList,LinkedList,HashSet,LinkedHashSet,TreeSet,HashMap,LinkedHashMap,TreeMap; 数组和集合的区别 区别1: 数组可以存储基本数据类型/引用数据类型 基本数据类型存的是值 引用数据类型存的是地址 数组在创建的时候 就会定义存储的数据类型 也就是只能存储一种数据类型 集合只能存储引用数据类型(对象) 集合中也可以存储基本数据类型(装箱)最终存储的还是 Object 如果没有泛型限定 默认存储的都是 Object类型的数据 也就是任意类型 区别2 数组长度是固定的,不能自动增长 集合是长度可变的,根据元素的多少来决定长度
今天我们来探索一下HashSet,TreeSet与LinkedHashSet的基本原理与源码实现,由于这三个set都是基于之前文章的三个map进行实现的,所以推荐大家先看一下前面有关map的文章,结合使用味道更佳。
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看
来源:https://blog.csdn.net/weizhengzhou520/article/details/81806539
在说集合前我们不得不说一下数组 数组的作用: 存放一组相同的数据类型(基本或对象)的数据,从而实现对数据的管理 优势:可以快速的通过下标对数组元素进行访问,效率高 劣势:容量实现定义好了,不能随着需求变化而扩容 因此出现了更好的集合框架 一、数组和集合的比较 数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合。如下: 1:数组能存放基本数据类型和对象,而集合类存放的都是对象的引用,而非对象本身! 2:数组容易固定无法动态改变,集合类容量动态改变。
集合和数组不一样,数组元素可以是基本类型的值,也可以是对象(的引用变量),集合里只能保存对象(的引用变量)。
领取专属 10元无门槛券
手把手带您无忧上云