lamda获取参数集合去空_JAVA集合框架知识

f1ca27320cae418df9ff68ead2879c90.png

3b144ce177126401edb967772a7e44ea.png

1. Vector用法和ArrayList区别

(1) Vector的特有方法有哪些?

void addElement(E obj) 将指定的组件添加到此向量的末尾,将其大小增加1。

(2) Vector与ArrayList的区别是什么?

①Vector的add()方法是同步方法,ArrayList的add()方法是非同步方法

②Vector扩容每次扩充1倍,ArrayList每次扩充0.5倍

③Vector是在调用构造方法时,直接初始化容量为10,ArrayList是在第一次调用添加方法时,初始化容量为10。

④Vector的版本时JDK1.0开始的,ArrayList是JDK1.2开始的

⑤Vector是线程同步的,安全性高,效率低,

ArrayList是线程非同步的,安全性低,效率高。

2. Map接口_HashMap_Hashtable的用法详解

(1) Map接口常用的方法有哪些?

①void clear() 从该地图中删除所有的映射(可选操作)。

②boolean containsKey(Object key) 如果此映射包含指定键的映射,则返回 true 。

③boolean containsValue(Object value) 如果此地图将一个或多个键映射到指定的值,则返回 true 。

④Set<Map.Entry<K,V>> entrySet() 返回此地图中包含的映射的Set视图。

⑤V get(Object key) 返回到指定键所映射的值,或 null如果此映射包含该键的映射。

⑥boolean isEmpty() 如果此地图不包含键值映射,则返回 true 。

⑦Set<K> keySet() 返回此地图中包含的键的Set视图。

⑧V put(K key, V value) 将指定的值与该映射中的指定键相关联(可选操作)。

⑨void putAll(Map<? extends K,? extends V> m) 将指定地图的所有映射复制到此映射(可选操作)。

⑩V remove(Object key) 如果存在(从可选的操作),从该地图中删除一个键的映射。

a.default boolean remove(Object key, Object value) 仅当指定的密钥当前映射到指定的值时删除该条目。

b.default V replace(K key, V value) 只有当目标映射到某个值时,才能替换指定键的条目。

c.int size() 返回此地图中键值映射的数量。

d

(2) HashMap与Hashtable的异同是什么?

①版本不同HashMap JDK1.2 Hashtable 1.0

②HashMap继承了AbstractMap,实现了Map接口,Hashtable继承了Dictionary实现Map接口。

③HashMap允许null值和null键,但是null作为key只允许一个,Hashtable非null的键和值。

④HashMap是线程不同步的(效率高,安全性低),Hashtable(效率低,安全性高)线程同步。

3. HashMap的底层原理

(1) HashMap的底层数据结构是什么?

散列表

(2) 简述哈希表的去重原理?

调用equals(…)方法比较元素的内容是否相同,如果相同则不再向链表中添加元素。

1. 二叉树和红黑树

(1) 简述树的概念和特征?

树的概念:由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系为父子关系。

树的特征:父子关系在树的结点之间建立了一个层次结构。树的结点包含一个数据元素及若干指向其子树的若干分支。在这种层次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点,或简称为树根。

(2) 什么样的树被称为红黑树?

①红黑树是平衡二叉树的一种。平衡二叉树:每个结点的平衡因子都为1,-1,0的二叉排序树,或者说每个结点的左右子树的高度最多差1的二叉排序树。由于红黑树也是二叉查找树,它们当中每一个节点的比较值都必须大于或等于在它的左子树中的所有节点,并且小于或等于在它的右子树中的所有节点。这确保红黑树运作时能够快速的在树中查找给定的值。

②红黑树的每个节点上都有存储位表示结点的颜色,可以是红或黑。

③每个叶子节点(NIL)是黑色。[注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]

④如果一个节点是红色的,则它的子节点必须是黑色。

⑤从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。

2. TreeMap的使用和底层实现

(1) TreeMap的常用构造方法有哪些?

①TreeMap() 使用其键的自然排序构造一个新的空树状图。

②TreeMap(Comparator<? super K> comparator)

构造一个新的,空的树图,按照给定的比较器排序。

③TreeMap(Map<? extends K,? extends V> m)

构造一个新的树状图,其中包含与给定地图相同的映射,根据其键的 自然顺序进行排序 。

④TreeMap(SortedMap<K,? extends V> m)

构造一个包含相同映射并使用与指定排序映射相同顺序的新树映射。

(2) TreeMap的底层数据结构是什么?

红黑树

3. Set接口_HashSet的用法

(1) Set集合存储元素的特征?

唯一,无序。

(2) Set接口常用的子类有哪些?

HashSet,LinkedHashSet,TreeSet

4. HashSet底层实现_JDK源码分析

(1) HashSet的底层数据结构概念?

哈希表,也叫散列表,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。由数组+单向链接组成其数据结构。

(2) HashSet与HashMap的关系?

底层都是用散列表作为数据结构实现的容器类,一个实现了Set接口,一个实现Map接口。两者不同在于:

*HashMap*

*HashSet*

HashMap实现了Map接口

HashSet实现了Set接口

HashMap储存键值对

HashSet仅仅存储对象

使用put()方法将元素放入map中

使用add()方法将元素放入set中

HashMap中使用键对象来计算hashcode值

HashSet使用成员对象来计算hashcode值,对于两个对象来说hashcode可能相同,所以equals()方法用来判断对象的相等性,如果两个对象不同的话,那么返回false

HashMap比较快,因为是使用唯一的键来获取对象

HashSet较HashMap来说比较慢

5. TreeSet的使用_JDK源码分析

(1) TreeSet的底层数据结构是什么?在存储自定义元素时是通过什么方式去掉重复元素的?

红黑树。通过内部或者外部比较器实现comparator接口,compare()方法来去重。

(2) TreeSet集合的特点?

有序(升序),唯一。

6. 泛型

(1) 为什么需要泛型?使用泛型的好处有哪些?

在JDK1.4以前类型不明确:装入集合的类型都被当做Object对待,从而失去自己的实际类型。从集合中取出时往往需要转型,效率低,容易产生错误。

好处:增强程序的可读性和安全性。

(2) 泛型分几类,分列举例说明?

①泛型类 public class Myclass<T>{}

②泛型接口 public interface MyInterface<T>{}

③泛型方法public viod Mymethod(){}

7. 泛型的高级使用_容器中使用泛型

(1) 泛型的高级应用分为哪两类?

①泛型的上限:使用关键字 extends,表示参数化的类型可能是 所指定的类型或者是此类型的子类

②泛型的下限:使用关键字 super 进行声明,表示参数化的类型 可能是所指定的类型,或者是此类型的父类型,直至 Object 类

(2) 泛型的上限指的是什么含义,请举例说明?

泛型的上限:使用关键字 extends,表示参数化的类型可能是 所指定的类型或者是此类型的子类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Blazor学习之旅(2)第一个Blazor应用

【Blazor】| 总结/Edison Zhou大家好&#xff0c;我是Edison。最近在学习Blazor做全栈开发&#xff0c;因此根据老习惯&#xff0c;我会将我的学习过程记录下来&#xff0c;一来体系化整理&#xff0c;二来作为笔记供将来翻看。本篇我们来构建第一个Blazor Web应用&#xff0c;…

HTTP与服务器的四种交互方式

Http定义了与服务器交互的不同方法&#xff0c;最基本的方法有4种&#xff0c;分别是GET&#xff0c;POST&#xff0c;PUT&#xff0c;DELETE。URL全称是资源描述符&#xff0c;我们可以这样认为&#xff1a;一个URL地址&#xff0c;它用于描述一个网络上的资源&#xff0c;而H…

ubuntu 以太网已连接但是无法联网_工业以太网有多“牛X”?两个案例告诉你

现代生活中&#xff0c;工业以太网发挥的作用愈来愈重要。为增进大家对工业以太网的认识&#xff0c;本文将基于3方面介绍工业以太网&#xff1a;何为工业以太网物理层&#xff1f;工业以太网具有哪些优势&#xff1f;工业以太网两大方案介绍。如果你对工业以太网具有兴趣&…

http服务详解(1)——一次完整的http服务请求处理过程

前言&#xff1a;要熟练掌握一个服务&#xff0c;首先需要非常了解这个服务的工作过程&#xff0c;这篇就详细解释了http服务的请求处理过程。 一次完整的http请求处理过程 &#xff08;1&#xff09;流程图 &#xff08;2&#xff09;过程详解 0、DNS域名解析&#xff1a;递归…

线程管理(九)使用本地线程变量

声明&#xff1a;本文是《 Java 7 Concurrency Cookbook 》的第一章&#xff0c; 作者&#xff1a; Javier Fernndez Gonzlez 译者&#xff1a;郑玉婷 校对&#xff1a;方腾飞 使用本地线程变量 并发应用的一个关键地方就是共享数据。这个对那些扩展Thread类或者实现Runnable接…

5训练需要更改参数吗_糖尿病病人需要多喝水吗?多喝水的5大好处,了解一下...

糖尿病是典型的慢性疾病&#xff0c;需要在生活中多加讲究&#xff0c;从各方面进行预防&#xff0c;其中喝水也是非常重要的一项调控方法。这就与糖尿病影响到患者的代谢功能有一定的关系&#xff0c;如果能够保持良好的饮水习惯&#xff0c;就可以有效解决糖尿病带来的影响。…

wordpress搭建博客 主题推荐 2019

一、generatepress2.14 主页&#xff1a; 详情页&#xff1a; 二、 Astra 主页&#xff1a; 详情页&#xff1a; 三、Bstone 主页&#xff1a; 详情页&#xff1a; 四、Hestia 主页&#xff1a; 详情页&#xff1a; 五、Rife free 主页&#xff1a; 详情页&#xff1a;

Blazor学习之旅(1)初步了解Blazor

【Blazor】| 总结/Edison Zhou九月以来在学习Blazor做全栈开发&#xff0c;因此根据老习惯&#xff0c;我会将我的学习过程记录下来&#xff0c;一来体系化整理&#xff0c;二来作为笔记供将来翻看。作为第一篇&#xff0c;我们先来了解一下这个Blazor到底是个什么鬼。什么是Bl…

C#合并文件夹图片列表 自定义排版顺序

本次程序编写主要为了将pdf word等文档转换为图片后设置不同的打印排版 前提 目标文件夹中的图片高宽都是一致的 /// <summary>/// 合并图片/// </summary>/// <param name"savedictory">文件保存目录</param>/// <param name"singl…

数据库分库分表、读写分离的原理和实现,以及使用场景

2019独角兽企业重金招聘Python工程师标准>>> 为什么要分库分表和读写分离&#xff1f; 类似淘宝网这样的网站&#xff0c;海量数据的存储和访问成为了系统设计的瓶颈问题&#xff0c;日益增长的业务数据&#xff0c;无疑对数据库造成了相当大的负载&#xff0c;同时…

谈谈一些有趣的CSS题目(十六)-- 奇妙的 background-clip: text

开本系列&#xff0c;谈谈一些有趣的 CSS 题目&#xff0c;题目类型天马行空&#xff0c;想到什么说什么&#xff0c;不仅为了拓宽一下解决问题的思路&#xff0c;更涉及一些容易忽视的 CSS 细节。 解题不考虑兼容性&#xff0c;题目天马行空&#xff0c;想到什么说什么&#x…

第五周软件工程作业-每周例行报告

一、PSP T名称C内容ST开始时间ED结束时间中断时间/min实际时间/minScrum会议第一次Scrum会议10月13日11:3010月13日12:10040第二次Scrum会议10月14日15:3010月14日15:55025第三次Scrum会议10月15日13:3010月15日14:05035第四次Scrum会议10月16日11:3010月16日13:00090第五次Scr…

Docker Desktop 可以直接启用Kubernetes 1.25 了

作为目前事实上的容器编排系统标准&#xff0c;K8s 无疑是现代云原生应用的基石&#xff0c;很多同学入门可能直接就被卡到第一关&#xff0c;从哪去弄个 K8s 的环境&#xff0c; Docker Desktop 自带了Kubernetes 服务&#xff0c;但是在过往的经验中就是用梯子也安装不了&…

MySQL - 视图

一、概述 Mysql 5.0 版本后开始引入视图。视图本身是一个虚拟表&#xff0c;不存放任何数据。在使用 sql 语句访问视图的时候&#xff0c;他返回的数据都是在查询过程中从其他表动态生成的。 二、使用视图   1、创建视图 CREATE VIEW comic_view as SELECT comic_id,name,pe…

Centos 磁盘管理及配额管理

实验内容&#xff1a;一.添加两块硬盘&#xff0c;使用LVM做成VG01组&#xff0c;在该VG中新建两个LV。二.将这两个LV格式化为ext4/xfs&#xff0c;开机自动挂载到系统mnt1,mnt2目录下。三.lv02开启磁盘配额功能&#xff0c;用来进行用户与组分配额的实验。四.在系统里添加用户…

OnionArch - 采用DDD+CQRS+.Net 7.0实现的洋葱架构

博主最近失业在家&#xff0c;找工作之余&#xff0c;看了一些关于洋葱&#xff08;整洁&#xff09;架构的资料和项目&#xff0c;有感而发&#xff0c;自己动手写了个洋葱架构解决方案&#xff0c;起名叫OnionArch。基于最新的.Net 7.0 RC1, 数据库采用PostgreSQL, 目前实现了…

全新升级的AOP框架Dora.Interception[2]: 基于约定的拦截器定义方式

Dora.Interception&#xff08;github地址&#xff0c;觉得不错不妨给一颗星&#xff09;有别于其他AOP框架的最大的一个特点就是采用针对“约定”的拦截器定义方式。如果我们为拦截器定义了一个接口或者基类&#xff0c;那么拦截方法将失去任意注册依赖服务的灵活性。除此之外…

加快Android Studio的编译速度

从Eclipse切换到Android Studio后&#xff0c;感觉Android Studio的build速度比Eclipse慢很多&#xff0c;以下几个方法可以提高Android Studio的编译速度使用Gradle 2.4Gradle 2.4对执行性能有很大的优化&#xff0c;但Android Studio现在默认使用的是Gradle 2.2,所以我们需要…

PaddleOCR在 Linux下的webAPI部署方案

很多小伙伴在使用OCR时都希望能采用API的方式调用&#xff0c;这样就可以跨端跨平台了。本文将介绍一种基于python的PaddleOCR识别WebAPI部署方案。喜欢的可以关注公众号&#xff0c;获取更多内容。一、 Linux环境下部署1.环境要求操作系统&#xff1a;CenterOS7&#xff1b;主…

影响程序员生涯的三个错误观念,你千万不要犯!

程序员在社会上&#xff0c;到底是怎样一个生活群体&#xff1f;是否能找到自己方向&#xff1f;其实&#xff0c;路一直都在那里&#xff0c;只是你看不到而已&#xff01; 当初的你&#xff0c;可能一直被一些技术牵着鼻子走&#xff0c;并不是自己在做着自己想做的&#xff…