当前位置: 首页 > 网络应用技术

“返回炉子” - 收藏(容器)

时间:2023-03-09 12:06:58 网络应用技术

  绿色代表接口/抽象类;蓝色代表。

  主要由两个主要接口组成,一个是“集合”接口,另一个是“地图”接口。

  当我第一次开始学习“收集”时,因为我预览不好,我没有学习基本知识,界面和课程,因此我没有学习这些基本知识,因此我在这里学到了这些知识。我与“收藏”接触。在我看来,这两个词只出现了数学中学的“集合”,因此当“收集”以编程语言出现时,我没有到处。数学中的“收集”概念。

  数学中的“收集”:

  该集合是称为元素的集合。现代集通常定义为:整个一个或多个确定的元素。

  Java中的“集合”:在我的理解中,可以说该集合是Java对象的存储。有人称其为收藏,有些人称其为容器。这就是为什么我的标题读取集合(容器)。集合中存储的对象称为元素。

  就是这样。在某些情况下,我们需要创建许多Java对象,那么这些对象应该存储在哪里?

  需求就是这样:

  然后,您会想到可以在开始时存储的数组和数组存储对象是固定的。因此,数组不符合这些条件。在这一点上,集合出现。

  从上面的框架图可以看出,有两个接口,它们是和谐的。

  两个接口抽象元素的存储方法。具体的区别是什么?好吧,不要说您知道它用于存储单个元素,而是用于存储密钥值。

  在下面,我将从这两个界面中切入,然后开始返回炉子进行重建,哈哈哈哈哈。

  您可以采取这些问题进行审查:

  它是最基本的集合接口,是代表一组类型的一组对象。Java不提供直接实现该集合的类。只有继承界面的子间隙(列表,set,队列)。界面不是唯一的,并且在这里强调的是,唯一且无序的范围,那么该集合的范围很大。如果要收缩,例如唯一和有序的缩小,则可以通过子接口指定它。正确,它是定义子接口。

  让我们看一下集合接口抽象的方法是什么。

  在其中,您还可以看到一种方法,主要是该方法,即迭代器。所谓的迭代器是用于遍历集合元素的事物。

  该方法是返回该集合中元素的迭代器,即获得集合的迭代器。此抽象方法不能保证迭代顺序(除非此集合是提供担保类的实例)。

  为了更受欢迎,我们想穿越集合的元素,因此我们需要通过集合对象获得迭代对象,以通过迭代对象遍历集合中的元素,并且遍历遍历的顺序与集合有关。

  关于此迭代器,让我们稍后再谈谈。

  让我们开始谈论基本接口实现类,基本API及其自己的一些意见。最主要的是首先检查API的使用。毕竟简单?

  接口下的实现类是...

  这是对界面的简要介绍。接口是有序的。使用此接口可以准确控制每个元素插入的位置。它可以传递“索引”(即,元素在列表中,类似于数组的设置,从0开始,从0开始,从0开始,从0开始,从0开始,从0开始,从0开始,从0开始,从0开始从0开始。

  arrayList,让我们看一下arraylist源代码,它的定义是这样:

  你可以看到

  这是一个动态的数组。可以动态修改SO称为的动态阵列。它可以随时动态扩展,随时删除元素,即没有固定容量限制,并且可以存储许多元素,直到您的内存爆炸为止。

  初始化是:

  这两种方式有什么区别?

  第一种写作方法:目前,列表的对象可以通过此对象调用列表接口语句,但是无法调用ArrayList的唯一方法。您可以直接调用。“特定实现”此处意味着您使用arraylist要立即实例列表接口或使用linkedlist实例化列表接口。列表接口不关心。当它在外部使用时,就足以知道列表提供了这些API。另一个角度是理解的,即,该对象具有列表的属性和方法,而无需ArrayList唯一的属性和方法。

  第二种方式:目前,ArrayList的对象可以调用所有方法。毕竟,ArrayList实现了列表接口,然后有列表的方法,以及ArrayList的对象。

  进入标题

  毕竟,将使用这些API的使用需要熟悉算法问题。

  种类:

  关于收集工具类的分类以查看这两种方法,这两种方法都是通用方法。

  第一种方法要求“被安排”实现接口,以便可以使用此方法。

  第二种方法需要一个“要安排”的比较器,换句话说,使用此方法需要一个比较器 - 类实现接口。

  介绍可比较和比较器

  因此,如果您希望某个类的对象支持排序,则需要让此类实现界面。该界面只有一个抽象方法。我们需要实施它。它的规则是:如果当前值很大,则相同的情况相等,返回0,如果当前值很小,则返回负值。

  在这里,我们可以看到集合可以对数字进行排序,因为此数字集合的元素类型是整数。为什么整数支持排序的元素?我们可以从源代码中看到整数实现了可比接口,因此整数类型元素支持排序。

  返回第一个句子,如果您希望某个类的对象支持排序,则需要让此类实现接口,否则它将不支持排序。

  下面,我在此处使用两种方法(可比较或比较器的实现)来支持排序。

  可以与栗子相提并论:我在这里有一个游戏课(要出院,它不支持分类,我们的任务是使游戏具有分类的能力。游戏直到游戏意识到Collections知道游戏排序的可比接口。

  可比接口和重写方法的游戏类实现。

  这样,我们可以用收藏品对游戏进行排序。

  我可以做同样的事情,我在这里有一个游戏课

  编写游戏比较课以允许此类

  这样,我们可以用收藏品对游戏进行排序。

  摘要排序您之一可以选择两种方法(实现可比较或比较器),以便类支持排序。

  终于分类了。

  linkedlist是一个链接列表,这是一个线性表。我们还知道我们已经学习了数据结构。有指针域和数据域。尽管Java没有指针,但有指针。

  在Java中,此LinkedList是列表接口下的实现类。它也是一个常用的集装箱。还将使用算法问题。

  让我们看一下LinkedList源代码,它的定义:

  你可以看到

  同样,LinkedList需要掌握的方法类似于ArrayList。可以说基本上是相同的,但是底层是不同的。

  目前,您没有说明使用基本的使用方法,您可以自己尝试!

  向量,让我们看一下源代码,它是这样定义的:

  你可以看到

  这样,它与arraylist的定义完全相同。它们之间有任何区别吗?当然有!

  不同之处在于向量是安全的,并且在多线程操作下不会存在并发问题,因为向量向每种方法添加了关键字以确保对多线程操作方法同步。

  顾名思义,堆栈是堆栈,它是向量的一个子类,它实现了标准堆栈数据结构。

  它包括向量的方法及其自己的方法。

  但是,目前不建议使用它,而是选择使用linkedlist将其用作堆栈。

  这是要获得队列队列!

  Java是一个接口,与上面的堆栈不同,堆栈是一类。

  让我们看一下队列接口源代码,它是这样定义的:

  此接口摘要6种方法:

  这是一个大问题!这些方法有什么区别?Intersectionlet的源代码所说的内容,此源代码描述不怕,我有下面的翻译?

  add()和要约()之间的区别

  因此,不同之处在于,在容量有限的队列中,add()超过限制,并且要录()不会返回到false

  删除()和poll()之间的区别

  因此,区别是:当团队空置时删除团队时,remove()将抛出异常,端口()将返回null

  元素()和peek()之间的区别

  因此,区别是:当团队空着以查看团队元素时,元素()将抛出异常,而peek()将返回null

  总体而言,这是失败之间的区别:

  Advanced()报价()返回false出发团队删除()Poll()poll()返回null

  队列具有一个子接口,是两个端队列,而Deque实现类是和谐的。然后我们可以找到Deque接口的抽象方法。在原始队列上,有更多的方法,例如第一和最后的方法,这与队列的头部和尾巴的操作相对应(加入团队,出发等)。

  有一个抽象类实现了队列接口,然后继承了优先级。

  演示下的大多数基本API都是相似的。

  至于优先队列?之后写!这个坑正在等待回来化妆:dissed_reled:

  对于集合界面,我们需要了解三个实现类,即哈希集,链接hashset,treetet。

  Hashset基于hashmap。

  Treeset基于Treemap。

  至于地图,让我们稍后再谈谈。

  哈希集和LinkedHashset

  标签和linkedhashset的API使用基本相同。您将是一个,等于两个,两个,老实说,如果您熟悉收集界面的方法,那将是很多,那将是更好的哈哈哈哈哈。

  Treeset的坑正在等待回来:Disped_reled:

  MAP接口,它提供了映射关系,用于存储具有映射关系的元素,并以键值对的形式存储。可以任意存储在输入对象中的键和值。

  查看地图接口的源代码,您可以发现条目是地图接口中定义的“内部接口”。

  需要知道的是:

  看看完整地图接口提供的抽象方法。当然,相同。无需掌握它。

  Hashmap是我们学到的哈希表的实现。这是经常使用的数据结构。该算法也具有其阴影。哈希图中的键和值值可能为null,但是hashmap只能具有键值null的映射(无法重复键值)

  仍然相同,首先在此处查看API的使用。

  这个坑正在等待回来:失望的_reled:

  这个坑正在等待回来:失望的_reled:

  这个坑正在等待回来:失望的_reled:

  好吧,我仍然没有描述这方面,给自己留下了很多坑,只要等我添加它!收集和重建进度20%!

  受我的水平限制,存在不可避免的错误和缺点。如果您找到了,请指出!

  最后,感谢您看到这一点,感谢您为认真对待我的努力。希望这个博客能为您提供帮助!

  您轻轻地喜欢它,它会在我心中为世界增添一颗明亮而令人眼花azz乱的星星!

  原始:https://juejin.cn/post/7102804193638875166