一、javaSE (十七)set集合、Collection集合、针对Collection集合我们到底使用谁、在集合中常见的数据结构

1:set集合(理解)

(1)Set集合的特点

无序,唯一

(2) Hashset集合(掌握)

A:底层数据结构是哈希表(是一个元素为链表的数组)

B:哈希表底层依赖两个方法: hashCode()和equals()

执行顺序

首先比较哈希值是否相同

相同:继续执行equals()方法

返回true:元素重复了,不添加

返回fa1se:直接把元素添加到集合

不同:就直接把元素添加到集合

C:如何保证元素唯一性的呢?

由 hashcode()和equals()保证的

D:开发的时候,代码非常的简单,自动生成即可

E: HashSet存储字符串并遍历

F: HashSet存储自定义对象并遍历(对象的成员变量值相同即为同一个元素)

(3) Treeset集合

A:底层数据结构是红黑树(是一个自平衡的二叉树)

B:保证元素的排序方式

a:自然排序(元素具备比较性)

让元素所属的类实现 Comparable接口

b:比较器排序(集合具备比较性)

让集合构造方法接收 Comparator的实现类对象

C:把我们讲过的代码看一遍即可

(4)案例

A:获取无重复的随机数

B:键盘录入学生按照总分从高到底输出

2:Collection集合总结

Collection

|--List 有序,可重复

|--ArrayList

底层数据结构是数组,查询快,增删慢。

线程不安全,效率高

|--Vector

底层数据结构是数组,查询快,增删慢

线程安全,效率低

|--LinkedList

底层数据结构是链表,查询慢,增删快

线程不安全,效率高

|--set 无序,唯一

|--HashSet

底层数据结构是哈希表

何保证元素唯一性的呢?

依赖两个方法: hashCode()和equals()

开发中自动生成这两个方法即可

|--LinkedHashSet

底层数据结构是链表和哈希表

由链表保证元素有序

由哈希表保证元素唯一

|--TreeSet

底层数据结构是红黑树

如何保证元素排序的呢?

自然排序

比较器排序

如何保证元素唯一性的呢?

根据比较的返回值是否是0来决定

4:针对Collection集合我们到底使用谁呢?

唯一吗?

是:Set

排序吗?

是:TreeSet

否:HashSet

如果你知道是set,但是不知道是哪个set,就用HashSet

否:List

要安全吗?

是: Vector

否: ArrayList或者LinkedList

查询多: ArrayList

增删多: LinkedList

如果你知道是List,但是不知道是哪个List,就用ArrayList

如果你知道是Collection集合,但是不知道使用谁,就用 Arraylist。

如果你知道用集合,就用 ArrayList

5:在集合中常见的数据结构(掌握)

ArrayXxx:底层数据结构是数組,查询快,增删慢

LinkedXxx:底层数据结构是链表,查询慢,增删快

HashXxx:底层数据结构是哈希表。依赖两个方法: hashCode()和equa1s()

TreXxx:底层数据结构是二又树,两种方式排序;自然排序和比较器排序

原文地址:https://www.cnblogs.com/zhangchengbing/p/8280253.html

时间: 2024-10-07 01:57:06

一、javaSE (十七)set集合、Collection集合、针对Collection集合我们到底使用谁、在集合中常见的数据结构的相关文章

Java基础针对自己薄弱环节总结05(API、集合)

一.API中的一些方法 ** Arrays工具类 ** 1. 概念 针对数组操作的工具类 2. 成员方法 a) toString():public static String toString(数据类型[] 变量名)-–把数组变成字符串 b) sort():public static void sort(数据类型[] 变量名)--对数组进行排序 c) public static int binarySearch(int[] arr,int value)--二分查找 System类 1. 系统类,

集合详解之 Collection

集合详解之 Collection 先来看看集合的继承关系图,如下图所示: 其中: 外框为虚线的表示接口,边框为实线的表示类: 箭头为虚线的表示实现了接口,箭头为实线的表示继承了类. 为了方便理解,我隐藏了一些与本文内容无关的信息,隐藏的这些内容会在后面的章节中进行详细地介绍. 从图中可以看出,集合的根节点是 Collection,而 Collection 下又提供了两大常用集合,分别是: List:使用最多的有序集合,提供方便的新增.修改.删除的操作: Set:集合不允许有重复的元素,在许多需要

Java 集合系列02之 Collection架构

[转自]http://www.cnblogs.com/skywang12345/p/3308513.html 概要 首先,我们对Collection进行说明.下面先看看Collection的一些框架类的关系图: Collection是一个接口,它主要的两个分支是:List 和 Set. List和Set都是接口,它们继承于Collection.List是有序的队列,List中可以有重复的元素:而Set是数学概念中的集合,Set中没有重复元素!List和Set都有它们各自的实现类. 为了方便,我们

<JAVA8新增内容>关于集合的操作(Collection/Iterator/Stream)

因为下文频繁使用lambda表达式,关于Java中的lambda表达式内容请见: http://www.cnblogs.com/guguli/p/4394676.html 一.使用增强的Iterator遍历集合元素 Iterator接口也是Java集合框架的成员,但它与Collection系列,Map系列的集合不一样:Collection系列集合,Map系列集合主要用于承装其他对象,而Iterator则主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器

【转】Java 集合系列02之 Collection架构

概要 首先,我们对Collection进行说明.下面先看看Collection的一些框架类的关系图: Collection是一个接口,它主要的两个分支是:List 和 Set. List和Set都是接口,它们继承于Collection.List是有序的队列,List中可以有重复的元素:而Set是数学概念中的集合,Set中没有重复元素!List和Set都有它们各自的实现类. 为了方便,我们抽象出了AbstractCollection抽象类,它实现了Collection中的绝大部分函数:这样,在Co

黑马程序员——Java基础---集合(一)---Collection、set、list

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------        集合框架 java中有许多的集合,也称为容器,下图便是集合框架的构成及分类. 一.为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式.

字典与集合(Dictionary与Collection)

Dictionary对象将替换Collection对象,并提供附加的语言从而使增加和删除记录的速度比以前提高三倍 虽然Visual Basic 6.0只有很少的新特点,但是具有某些功能强大的新的对象模型,其中之一就是Dictionary对象. Dictionary对象是无处不在的Visual Basic Collection对象的新版本.它的介绍存在于VBScript 2.0,并通过Visual Basic 6.0 对Scripting Runtime Library的支持涉入Visual Ba

黑马程序员——Java集合基础知识之Collection

集合基础知识--Collection Java中集合框架由常用的Collection接口和Map接口组成,而Collection接口又有两个子接口,是List接口和Set接口,常用的集合框架由这三个类组成. List接口的功能方法 List的使用最为简单,创建集合,通过add方法添加元素,get方法获取元素,通过迭代器获取元素.List接口存放的数据无序的,添加速度快,但是查询速度慢,因为查询的时候必须遍历,每次都重头开始,效率较低.常用实现类有ArrayList,LinkedList. Lis

黑马程序员——集合基础知识(Collection)

集合基础知识 数组:长度固定,可存基本数据和对象. 集合:只能放对象,不固定.容器也有共性,不断抽取成一个体系,集合框架.参阅顶层创建底层.顶层是collection.collection里有两个常见的接口,List和Set.常见集合有Arraylist,linkedlist,vector,hashSet TreeSet.为什么会出现这么多的容器呢,因为每一个容器对数据的存储方式都有不一样,.这个存储方式称之为数据结构!!因为他们的特点不一样 list因为有脚标存储和删除的效率很低,Set的效率