首页 > 其他分享 >8.4

8.4

时间:2023-08-05 16:14:18浏览次数:47  
标签:Map Set 8.4 框架 List 接口 集合

集合框架被设计成要满足以下几个目标。

  • 该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。
  • 该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。
  • 对一个集合的扩展和适应必须是简单的。
为此,整个集合框架就围绕一组标准接口而设计。你可以直接使用这些接口的标准实现,诸如: LinkedList, HashSet, 和 TreeSet 等,除此之外你也可以通过这些接口实现自己的集合。
从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayListLinkedListHashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。
集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:
  • 接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象
  • 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。
  • 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序,这些算法实现了多态,那是因为相同的方法可以在相似的接口上有着不同的实现。
除了集合,该框架也定义了几个 Map 接口和类。Map 里存储的是键/值对。尽管 Map 不是集合,但是它们完全整合在集合中。

Set和List的区别

  • 1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
  • 2. Set 检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>。
  • 3. List 和数组类似,可以动态增长,根据实际存储的数据的长度自动增长 List 的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。

标签:Map,Set,8.4,框架,List,接口,集合
From: https://www.cnblogs.com/dmx-03/p/17608054.html

相关文章

  • 8.4做题记录
    上午1#include<bits/stdc++.h>2usingnamespacestd;3intmain()4{5freopen("str.in","r",stdin);6freopen("str.out","w",stdout);7strings="a";8intn,k;9cin&......
  • 8.4总结
    今天比较忙一点,弄学生会的事情,搞不明白为啥上面这么nc,自己给我发的文件有好几处错误,害得我两次重新弄那个,真的无语,哎,没办法了,今晚最后一稿交上去了,我觉得问题不大了,接着让我准备防洪的,我没照片怎么弄啊,还不让用网上的照片累心......
  • 2023.8.4
    学习java中的类面向对象与面向过程面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象:强调具备了功能的对象,以类/对象为最小单位类与对象的关系类:对一类事物的描述,是抽象的、概念上的定义对象:是实际存在的该类事物的每个个体,因而也称为实例(instance)面向对象......
  • 8.4 后记
    T1简单题,预处理每段线路要走的次数\(cnt_i\),如果\(c_i+b_i\timescnt_i\lea_i\timescnt_i\)则买票T2原题,考虑逆向思考倒叙枚举操作,将待查询的点还原到原序列上T3好题对于每个点\((i,j)\),考虑以这个点为左上角/右下角正方形边长最多为\(l_i/r_i\)对于每一条对角......
  • 2023.8.4 杂题
    1.P5344【XR-1】逛森林先用并查集维护连通性。考虑如何建立传送门:如果使用树剖,强行线段树优化建图,那么空间开销过大,已经有2只\(\log\)。考虑使用倍增优化建图,对于一个点向上\(2^k\)的祖先的形成链都建一个点,模仿LCA的过程建边,空间是1只\(\log\).如果我们模仿ST......
  • 暑假集训D11 2023.8.4 补题
    题意给定一个数组\(a\).询问区间\([l,r]\)是否可以分成\(k\)段,每一段的和都是\(2\)的倍数(偶数)考虑前缀和\(sum\),如果\(sum[i]-sum[j-1]\)是偶数,那么\([j,i]\)一定是\(1\)个合法的区间.因此对于询问\(l,r\),可以统计前缀和的值为偶数的个数,......
  • 8.4打卡
    L2-010排座位#include<iostream>usingnamespacestd;intN,M,K,a[101][101]={0},fri[101]={0},p1,p2,ship;intisFriend(intx){ returnfri[x]==x?x:fri[x]=isFriend(fri[x]);}intmain(){ cin>>N>>M>>K; for(in......
  • 闲话8.4
    今天被课表上写着dp,pdf标题是图论的线性代数薄纱了。下午抽时间看了看明天的课件,发现了喜报:明天没有紫题......
  • 2023.8.4 周五:MySQL相关命令
    1#展示数据库2showdatabases;34#创建数据库5creatdatabase+db1(数据库名称);67#如果创建同样名字的数据库,会报错,可以选择另一条判断语句;8creatdatabaseifnotexistsdb1;910#删除数据库11dropdatabasedb1(数据库名称);1213#如果删......
  • 8.4 day12综合
    100+100+40+30=270T1差分,直接取minT2原题,详见之前day?T3最后强行降智,明明都想到了,强行自己给自己加了个log,挂成了暴力分按斜线提取,发现是二维偏序,直接做\(O(n\logn)\)T4搜索待补......