java中集合框架体系

     2022-03-13     310

关键词:

集合的体系结构:
    |--Collection(单列集合的根接口)
        |--List(子接口):元素是有序的,元素可以重复。因为该集合体系有索引。
            |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
                |--因为底层采用数组的数据结构,而数组中的元素在堆内存中是连续分配的,而且有索引,所以查询快,增删稍慢
                |--在使用迭代器遍历元素时,不能再使用集合的方法操作集合中的元素
                |--调用集合的contains()或remove()方法时底层会调用equals方法,如果存入集合的对象没有实现equals(),则调用Object的equals()方法
            |--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
            |--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
        |--Set(子接口):元素是无序(存入和取出的顺序不一定一致),元素不可以重复。
            |--HashSet:底层数据结构是哈希表。是线程不安全的。不同步。
                |--HashSet是如何保证元素唯一性的呢?
                    |--是通过元素的两个方法,hashCode和equals来完成。
|--如果元素的HashCode值相同,才会判断equals是否为true。
|--如果元素的hashcode值不同,不会调用equals。
|--注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。
|--LinkedHashSet
                |--TreeSet:可以对Set集合中的元素进行排序。
                    |--底层数据结构是二叉树。 保证元素唯一性的依据:compareTo方法return 0.
                    |--TreeSet排序的第一种方式:让元素自身具备比较性。元素需要实现Comparable接口,覆盖compareTo方法。
                        这种方式也成为元素的自然顺序,或者叫做默认顺序。
                    |--TreeSet的第二种排序方式。当元素自身不具备比较性时,或者具备的比较性不是所需要的。
                        这时就需要让集合自身具备比较性。在集合初始化时,就有了比较方式。
                        创建一个比较器(实现Comparator接口,重写compare方法),在创建TreeSet集合时将比较器传递给集合.
    |--Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。
        |--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。jdk1.0.效率低。
        |--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。将hashtable替代,jdk1.2.效率高。
        |--TreeMap:底层是二叉树数据结构。不同步。可以用于给map集合中的进行键排序。
        |--和Set很像。其实,Set底层就是使用了Map集合
            |--map集合的两种取出方式:
                |--Set<k> keySet:将map中所有的键存入到Set集合。因为set具备迭代器。
                    所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。
                    Map集合的取出原理:将map集合转成set集合。在通过迭代器取出。
                |--Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:Map.Entry
                    Entry其实就是Map中的一个static内部接口。
                    为什么要定义在内部呢?
                    因为只有有了Map集合,有了键值对,才会有键值的映射关系。
                    关系属于Map集合中的一个内部事物。而且该事物在直接访问Map集合中的元素

struts2中集合收集表单数据

收集表单的页面:1<formaction="listAction1!insert"method="post">2dog1:<inputname="ulist[0].dog.did"/>3<inputname="ulist[0].dog.dname"/><br>4dog2:<inputname="ulist[1].dog.did"/>5&l 查看详情

Java 9中集合的重载便利工厂方法有啥意义

】Java9中集合的重载便利工厂方法有啥意义【英文标题】:WhatisthepointofoverloadedConvenienceFactoryMethodsforCollectionsinJava9Java9中集合的重载便利工厂方法有什么意义【发布时间】:2017-06-1414:36:11【问题描述】:Java9附带conveniencefactorymethod... 查看详情

java中集合概念

1.集合是储存对象的,长度可变,可以封装不同的对象2.迭代器:其实就是取出元素的方式(只能判断,取出,移除,无法增加)                就是把取出方式定义在集合内部,这样... 查看详情

java中集合概念

集合的由来: 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行储存,而想要储存多个对象,就不能是一个基本的变量,而应该是一个... 查看详情

java基础04_集合框架

一、java中集合了类的关系图【简化版】注:虚线矩形表示接口实线矩形表示具体实现类实线矩形加粗表示具体实现类使用频率高,作为重点掌握 集合是存储多个元素的容器,但是,由于数据结构不同,java就提供了多种集合... 查看详情

首先java中集合类主要有两大分支

...序,去重,筛选等)都需要通过集合类来完成。首先java中集合类主要有两大分支:(1)Collection(2)Map先看它们的类图:(1)CollectionCollecti 查看详情

java中集合的一些初始化写法

List的初始化方法方法一List<Integer>list=newArrayList<Integer>(){{add(1);add(2);add(3);}};方法二Arrays.asList(1,1,2,3,4)Map的初始化方法Map<Integer,Integer>map=newHashMap<Integer,Integer>(){{put(1 查看详情

java——12个关于java中集合的面试题(代码片段)

文章目录:1.请问ArrayList、HashSet、HashMap是线程安全的吗?如果不是怎么获取线程安全的集合?2.ArrayList内部用什么实现的?2.1无参构造源码分析2.2有参构造源码分析(参数为容量)2.3有参构造源码分析࿰... 查看详情

006java集合浅析1

在本系列教程的上一篇文章中,使用画图的方式展示了JDK中集合框架的基础体系结构。对于其中的Collection组来说,其顶级的接口是Iterable接口,估计熟悉设计模式的读者已经明白,此处该接口的引入就是为了实现迭代器模式。&nb... 查看详情

hive中集合类型

Hive中集合类型创建表,集合是以-分割的数据文件加载数据查询数据查询数组中第一个字段再建一个表,使用map查看数据文件加载数据查询数据查询键值 创建表,struct类型查看准备的数据加载数据查询数据查询struct属性  查看详情

类中集合的 getter/setter 等价物

】类中集合的getter/setter等价物【英文标题】:Equivalentofgetters/settersforcollectionswithinaclass【发布时间】:2012-01-2409:37:52【问题描述】:我有一堂课如下:publicclassDocumentpublicList<DocumentSection>sections=newList<DocumentSection>();...各 查看详情

如何计算 Firestore 中集合下的文档数?

】如何计算Firestore中集合下的文档数?【英文标题】:HowtocountthenumberofdocumentsunderacollectioninFirestore?【发布时间】:2018-07-1002:54:15【问题描述】:我正在尝试获取CloudFirestore上存在的CollectionReference计数,我已尝试通过以下方式获... 查看详情

Xcode中集合视图的单元格未出现

】Xcode中集合视图的单元格未出现【英文标题】:CellsofUICollectionsViewinXcodeNotAppearing【发布时间】:2020-07-0509:32:08【问题描述】:我正在开发一个应用程序并设置一个UICollectionView。下面是UICollectionView所在视图控制器的代码:importU... 查看详情

如何确定 Python 中集合变量的大小?

】如何确定Python中集合变量的大小?【英文标题】:HowtodeterminethesizeofasetvariableinPython?【发布时间】:2019-12-0516:01:51【问题描述】:我的代码如下,表数据在set(cur)中捕获。有没有办法在linux/unix中找到这个变量占用的空间?(内... 查看详情

js中集合对象(arraymapset)及类数组对象的使用与对比

原文地址在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java中泛型强制要求指定类型。ES6引入了iterable类型,Array,Map,Set都属于iterable类型,... 查看详情

UI 测试中集合视图的错误单元格计数

】UI测试中集合视图的错误单元格计数【英文标题】:WrongcellscountforcollectionviewinUITests【发布时间】:2015-11-1219:36:03【问题描述】:我有一个像这样工作的集合视图的测试:functestDeleteItem()app.collectionViews.staticTexts["Item"].tap()app.butto... 查看详情

表视图行中集合视图的同步水平滚动

】表视图行中集合视图的同步水平滚动【英文标题】:Synchronizedhorizontalscrollingofcollectionviewsintableviewrows【发布时间】:2014-09-2221:27:25【问题描述】:我正在尝试在表格视图中同步所有集合视图中的滚动(请参见下面的图片链接)... 查看详情

javascript如何删除mongodb中集合的所有文档?(代码片段)

查看详情