当前位置: 首页 > news >正文

gta5房子网站建设中免费个人网站制作

gta5房子网站建设中,免费个人网站制作,做图模板下载网站,wordpress显示注册ip1.Array和ArrayList有何区别? Array可以容纳基本类型和对象,而ArrayList只能容纳对象 Array是指定大小的,而ArrayList大小是不固定的 2、ArrayList和LinkedList的区别是什么? 1、ArrayList是基于数组实现,LinkedList是基于链表…

1.Array和ArrayList有何区别?

Array可以容纳基本类型和对象,而ArrayList只能容纳对象

Array是指定大小的,而ArrayList大小是不固定的


2、ArrayList和LinkedList的区别是什么?

1、ArrayList是基于数组实现,LinkedList是基于链表实现

2、ArrayList在查找时速度快,LinkedList在插入与删除时更具优势


3、哪些集合类是线程安全的?

常识:线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染;线程不安全就是不提供数据访问保护,多线程先后更改数据会产生数据不一致或者数据污染的情况。

一般使用synchronized关键字加锁同步控制,来解决线程不安全问题。

  • ArrayList线程不安全,Vector线程安全;

  • HashMap线程不安全,HashTable线程安全;

  • StringBuilder线程不安全,StringBuffer线程安全

  • Stack也是线程安全的,继承于Vector

  • ConcurrentHashMap是一种高效但是线程安全的集合。


4、线程安全和速度之间的取舍?

线程安全必须要使用synchronized关键字来同步控制,所以会导致性能的降低
当不需要线程安全时,可以选择ArrayList,避免方法同步产生的开销;多个线程操作同一个对象时,可以选择线程安全的Vector;

5、List、Set和Map的区别和联系?

1>List和Set继承自Collection接口;而Map不是,Map是一组key-value映射的集合。

2>List特点:元素有放入顺序,元素可重复 

3>Map特点:元素按键值对存储,无放入顺序 

4>Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)


6、HashMap的底层结构/工作原理是什么?

Java 8.0后,HashMap的底层实现是数组+链表+红黑树。

HashMap的底层实现是用哈希表,而Java中实现哈希表的数据结构是数组+链表。其中,当链表长度超过8时,会自动使用红黑树代替,红黑树的查找时间复杂度为O(logn)。

HashMap内部是通过一个数组实现的,只是这个数组比较特殊,数组里存储的元素是一个Entry实体(jdk8为Node),这个Entry实体主要包含key、value以及一个指向下一份节点的next指针。HashMap是基于hashing实现的,当我们进行put操作时,根据传递的key值得到它的hashcode,然后再用这个hashcode与数组的长度进行模运算,得到一个int值,就是Entry要存储在数组的位置(下标);当通过get方法获取指定key的值时,会根据这个key算出它的hash值(数组下标),根据这个hash值获取数组下标对应的Entry,然后判断Entry里的key,hash值或者通过equals()比较是否与要查找的相同,如果相同,返回value,否则的话,遍历该链表(有可能就只有一个Entry,此时直接返回null),直到找到为止,否则返回null。

HashMap之所以在每个数组元素存储的是一个链表,是为了解决hash冲突问题,当两个对象的hash值相等时,那么一个位置肯定是放不下两个值的,于是hashmap采用链表来解决这种冲突,hash值相等的两个元素会形成一个链表。


7、HashMap和Hashtable的区别?

HashMap和Hashtable都实现了Map接口,HashMap几乎可以等价于Hashtable,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization)以及速度。

1、HashMap的key和value都允许为null,而Hashtable的key和value都不允许为null。HashMap遇到key为null的时候,调用putForNullKey方法进行处理,而对value没有处理;Hashtable遇到null,直接返回NullPointerException。

2、HashMap是非synchronized,而Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable;而如果没有正确的同步的话,多个线程是不能共享HashMap的。

3、HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以当有其它线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove()方法移除元素则不会抛出ConcurrentModificationException异常。但这并不是一个一定发生的行为,要看JVM。这条同样也是Enumeration和Iterator的区别。

由于Hashtable是synchronized即线程安全的,所以在单线程环境下它比HashMap要慢。如果你不需要同步,只需要单一线程,那么使用HashMap性能要好过Hashtable。

注意:Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。

8、哪些集合类提供对元素的随机访问?

ArrayList、HashMap、TreeMap和HashTable类提供对元素的随机访问。


9、遍历一个List有哪些不同的方式?

    List<String> strList = new ArrayList<>();//for-eachfor(String str:strList) {System.out.print(str);}//use iterator 尽量使用这种 更安全(fail-fast)Iterator<String> it = strList.iterator();while(it.hasNext) {System.out.printf(it.next());}

10、为什么集合接口Set、List、Map没有实现Cloneable和Serializable接口?

克隆(cloning)或者序列化(serialization)的含义是跟具体的实现相关的。因此,应该由集合接口的具体实现类来决定如何被克隆或者是序列化。仅仅是接口不实现,留给具体实现类实现。

实现Serializable序列化的作用:将对象的状态保存在存储媒体中以便可以在以后重写创建出完全相同的副本;按值将对象从一个从一个应用程序域发向另一个应用程序域。

实现 Serializable接口的作用就是可以把对象存到字节流,然后可以恢复。所以你想如果你的对象没有序列化,怎么才能进行网络传输呢?要网络传输就得转为字节流,所以在分布式应用中,你就得实现序列化。如果你不需要分布式应用,那就没必要实现实现序列化。


11、hashCode()和equals()的关系是什么?

如果o1.equals(o2),o1.hashCode()== o2.hashCode()应该永远是真的

如果o1.hashCode()== o2.hashCode, 它并不意味着o1.equals(O2)将是真的

1、hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;

2、如果两个对象相同,就是适用于equals(java.lang.Object) 方法,那么这两个对象的hashCode一定要相同;

3、如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点;

4、两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里”。

再归纳一下就是hashCode是用于查找使用的,而equals是用于比较两个对象的是否相等的。

参考资料:
Java Collection集合面试题
Java常见面试题及答案 21-30(集合类)
http://www.lbrq.cn/news/2387485.html

相关文章:

  • 百度权重2的网站百度平台投诉人工电话
  • wordpress 用iis建站百度seo查询
  • 纯静态网站 维护百度关键词搜索优化
  • 地方型旅游网站上海最大的seo公司
  • 无锡企业建站程序北京seo软件
  • 做音箱木工网站百度搜索引擎下载免费
  • 做网站的需要什么软件专业提升关键词排名工具
  • 做网站不赚钱中国品牌策划公司排名
  • 手机网站切图学编程的正规学校
  • 网站建设开发背景91关键词排名
  • 松江区建设交通委员会网站电脑培训网
  • 网站建设制作免费咨询推广平台 赚佣金
  • 十大免费ppt课件网站石家庄网站建设
  • 做视频网站视频存放问题seo网站内容优化
  • 大连网站建设设计公司哪家好宁国网络推广
  • 电商网站建设教案软文怎么写吸引人
  • 要做网站到哪里做免费b站推广入口2023
  • 做网站需要什么资质查关键词热度的网站
  • 产品介绍网站设计武汉百捷集团百度推广服务有限公司
  • 辽阳太子河网站建设西安网站建设公司排行榜
  • 用ci框架如何做动态网站网站代运营推广
  • 山东省中国建设银行网站家电企业网站推广方案
  • 免费的软件网站建设怎么建网站卖东西
  • 做阅读任务挣钱的网站百度排名查询
  • 做茶叶网站公司杭州seo按天计费
  • 丰镇网站建设广东网络seo推广公司
  • 免费高清logo在线成都seo技术经理
  • 天津网站建设电焊机推广平台哪儿有怎么做
  • 企业网站建设需要什么搜索引擎优化排名seo
  • 免费建网站软件下载南昌搜索引擎优化
  • Springboot项目的搭建方式5种
  • Oracle Database 23ai 技术细节与医疗 AI 应用
  • 控制鼠标和键盘
  • MC0457符咒封印
  • Linux 定时任务全解析:atd 与 crond 的区别及实战案例(含日志备份 + 时间写入)
  • 大语言模型任务分解与汇总:从认知瓶颈到系统化解决方案