java***类区别,Java面试知识宝典-Java宝典

 admin   2024-04-28 12:51   7 人阅读  0 条评论

对于社会上关于Java面试知识宝典-Java宝典和这样的java***类区别相关题,想必不少人都很想知道,那接下来就让小编为你讲解一下吧!


Java中的***类属于Javautil并具有三个主要类别***、列表(包括队列)和映射。Collection是List、Set、Queue***最基本的接口,Iterator允许你通过迭代器来导航***中的数据,Map是表映射的基本接口。


java***


下面我们分别介绍这三类***对象。


List接口下的***对象


List是Java开发中经常使用的数据类型。List是一个有序的Collection。List接口的实现类包括ArrayList、Vector和LinkedList。


列出接口相关的实现类


列表实现类ArrayList


ArrayList是最常用的List实现类,ArrayList不是线程安全的。


ArrayList在内部实现为数组,允许快速随机访其元素。


ArrayList是可动态扩展的,扩展后的大小是原始大小的15倍。


如果初始化ArrayList时未指定大小,则会创建一个空数组。第一次添加元素时,如果初始化没有指定大小,则初始大小设置为默认容量10。


ArrayList允许插入重复值和空值,ArrayList实现了RandomAccess接口,支持快速随机访,所以遍历时使用for循环效率更高,可以通过索引快速找到元素。


当在ArrayList中间插入或删除元素时,必须复制和移动数组,这是相对昂贵的。因此,它适合随机搜索和遍历,但不适合插入和删除。


列表实现类向量


和ArrayList一样,Vector也是使用数组实现的,但不同的是它支持线程同步,也就是说一次只有一个线程可以写入一个Vector,避免了多个线程同时写入造成的不一致。由于成本较高,访它比访ArrayList慢。


列表实现类LinkList


LinkedList采用链表结构来存储数据,非常适合数据的动态插入和删除,随机访和遍历速度相对较慢。它还提供了List接口中未定义的方法,专门用于操作列表的头元素和尾元素,可以用作堆栈、队列和双向队列。


在以下情况下使用ArrayList:


列表中的元素会被频繁访。


只需在列表末尾添加和删除元素即可。


在以下情况下使用LinkedList:


要访列表中的特定元素,您需要遍历循环。


您经常需要在列表的开头、中间和结尾添加和删除元素。


链接列表


Set接口下的***对象


哈希集


HashSet是基于HashMap实现的,是一个不允许重复元素的***。HashSet不是线程安全的。如果多个线程尝试同时修改HashSet,最终结果将是不确定的。当从多个线程访时,对HashSet的并发访必须显式同步。


树集


TreeSet是一个有序***,它的作用是提供Set的有序***。


链接哈希集


LinkedHashSet内部使用了LinkHashMap,这样做的意义或者好处是可以保证LinkedHashSet中元素的顺序,即遍历顺序和插入顺序一致。


套装套装


地图接口下的***对象


哈希映射


HashMap根据key的hashCode值来存储数据,大多数情况下可以直接找到对应的值,使得访速度很快,但遍历顺序不确定。


jdk17HashMap结构


HashMap有一个数组,数组的每个元素都是一个单向链表。上图中的每个绿色实体都是嵌套类项的实例。一项包含四个属性键、值、哈希值和单向链表中的下一个。当前数组容量始终为2^n并且可以扩展。扩展后,数组大小将是当前大小的两倍。


红黑树是jdk18之后引入的,如果链表长度大于8但数组长度大于64,则通过进行扩容操作转换为红黑树。如果数组长度很小,应该避免红黑树。红黑树必须进行左转、右转和颜色变化才能保持平衡,所以如果数组长度小于64,使用数组+链表比使用红色更快、更高效。-要查询的黑树。


jdk18HashMap结构


同步哈希图


ConcurrentHashMap由Segment数组和HashEntry组成,ConcurrentHashMap采用了段锁定技术,其中Segment继承了ReentrantLock。jdk18对jdk17的数据结构进行了重大改变,使用红黑树来保证查询效率,甚至取消了ReentrantLock,改为同步。


ConcurrentHashMapjdk18结构


LinkHashMapHashMap+双向链表,访有序,非线程安全


LinkedHashMap可以认为是HashMap+LinkedList。即使用HashMap来操作数据结构,使用LinkedList来维护元素插入的顺序。


HashTable数组+链表线程安全


Hashtable是一个遗留类,它的许多常见映射功能与HashMap类似。Hashtable是线程安全的,它的方法是通过同步修改的,不同的是它继承自Dictionary类,使其成为线程安全的。任何时候只有一个线程可以使用Hashtable,并发性不如ConcurrentHashMap。引入分体锁定。我们不建议在新代码中使用Hashtable。如果不需要线程安全,可以回退到HashMap,如果确实需要线程安全,可以使用ConcurrentHashMap。


TreeMap基本二叉树,可排序


TreeMap是映射的***,允许您比较元素的大小并按大小对传入键进行排序。其中,您可以使用元素的自然顺序或使用***中的自定义比较器进行排序。


一、全集和***的区别?

宇宙是按照取值范围的总集,例如实数可以是宇宙,有理数也可以是宇宙。


***是指在人们的直觉或思维中可以区分的一组具体对象,并使其成为一个整体或称为实体。这整个事情是一个***。


完备集是指与我们所研究的题相关的所有元素都包含在该***中,这个***称为完备集,通常用U表示。


在数学中,特别是***论和数学基础的应用中,通用类是包含几乎所有研究对象和***的类。


任何***都可以成为一个宇宙。当你研究一个特定的***时,该***就是一个***。如果我们研究实数,实数轴R,即所有实数的***,是一个完备集。这是康托在1870年代和1880年代首次利用现代朴素***论和实分析发展***可能性时的基本***。Cantor最初只对R的一个子集感兴趣。


***的概念与非***的概念相反。在数学中,任何具有相同性质的事物都称为***。在特定的思维对象领域中,思维对象可以以两种不同的方式存在。一种是有机组合的同类分子的***,另一种是由具有相同性质的对象组成的类。***和非***概念分别反映思想对象和对象类的***。***的基本属性决定了***的概念只反映***本身,而不反映组成***的个体。


二、什么是逻辑类型和***类型?

因为C语言中没有Boolean类型,逻辑值表示为0和非0,所以Boolean类型通常被int类型代替。C语言中的***类型是枚举enmu,而PASCAL的可以用下界形式表示的***类型在C中不存在,也没有内置的***类型操作如in。在帕斯卡工作。


三、***中的元素可以是***吗?

你好,是的。Java中的***相当于数组和其他容器。数组可以包含原始数据类型和对象类型(即引用类型),而***只能包含对象类型和数组。此外,由于它们属于对象,因此Java***的元素可以放置在数组中。列表怎么写


本文地址:http://chorofun.com/post/262231.html
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?