泡泡中文

最新网址:www.paowxw.com
字:
关灯护眼
泡泡中文 > 蓝星文娱:从微末崛起的娱乐大亨 > 第二十一章:Java基础面试题篇的核心19问《编程与面试2024》

第二十一章:Java基础面试题篇的核心19问《编程与面试2024》

...

14、List、Map、Set三个接口,在存储元素时,各有什么特点?

答:

1)List是有序的Colle…

使用此接口,能够精确的控制每个元素插入的位置。

用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素…

这类似于Java的数组。

2)Set是一种不包含重复的元素的Colle…

即任意的两个元素e1和e2都有e1.equals(e2)=false。

此外,Set最多有一个null元素。

3)Map接口…

请注意,Map没有继承Colle接口。

Map是提供了key到value的映射。

下面,让我来具体说说…

List、Map、Set,是Java中常用的三种集合接口。

它们在存储元素时,各自具有不同的特点:

1)List接口

具有5个特点,即有序性,可重复性,可变性,元素类型,操作方法。

有序性:

List集合中的元素,按照插入顺序进行存储…

可以通过索引,去访问和操作集合中的元素。

可重复性:

List集合中,允许存储重复的元素…

即同一个元素可以多次出现在集合中。

可变性:

List集合中的元素,可以随时增加、删除和修改,集合的大小可以动态改变。

元素类型:

在List集合中,可以存储任意类型的元素…

包括基本数据类型和引用类型。

操作方法:

List集合,提供了丰富的方法,来操作集合中的元素…

比如添加、删除、获取元素,查找元素等。

2)Map接口

具有5个特点,即键值对存储,键的唯一性,值的可重复性,键和值的类型,单向一对一关系。

键值对存储:

Map用于保存具有映射关系的数据…

即Key-Value对(双列元素)。

键的唯一性:

Map中的key不允许重复,每个key都唯一对应一个value。

值的可重复性:

Map中的value可以重复,即多个key可以对应相同的value。

键和值的类型:

Map中的key和value,可以是任何引用类型的数据。

单向一对一关系:

Map中key和value之间,存在单向一对一关系…

即通过指定的key,总能找到对应的value。

3)Set接口

具有5个特点,即无序性,元素的互异性,空集性质,元素类型,测试归属性。

无序性:

Set集合中的元素位置无顺序,元素之间是无序的。

元素的互异性:

Set集合不允许出现重复元素,每个元素只能出现一次。

空集性质:

空集是一切集合的子集,Set也可以表示空集。

元素类型:

Set集合中可以存储任意类型的元素。

测试归属性:

Set最常被用于测试归属性…

可以很容易地查询某个对象,是否在某个Set中。

综上所述:

List、Map、Set三种接口,在存储元素时的主要区别…

在于元素的顺序性、重复性、以及存储结构(List是有序列表,Map是键值对映射,Set是无序集合)。

所以,在实际使用中,我们可以根据需求…

去选择合适的集合类型,来存储和处理数据。

15、在Java中,List是个接口,那实现List接口的类有哪些,它们又有什么区别?

答:

在Java中,List确实是一个接口…

它属于Java的集合框架(Java Colles Framework)。

List接口定义了一些基本的操作,比如添加、删除元素等。

有很多类实现了List接口,诸如ArrayList、LinkedList、Vector等等。

这些实现类之间的主要区别,在于三者的内部实现机制和性能特性:

1)ArrayList

ArrayList内部基于数组实现…

因此它提供了,对元素的随机访问(即通过索引访问)的高效性。

当添加或删除元素时…

如果列表的大小,超过了其内部数组的大小,ArrayList会自动扩容;

这可能会涉及到数组元素的复制;

因此,在大量添加或删除元素时,可能会产生较高的开销。

在大部分情况下,ArrayList是List接口的首选实现…

特别是,当你需要频繁地,访问列表中的元素时。

2)LinkedList

LinkedList内部基于链表实现…

因此它提供了,在列表开头和结尾,添加或删除元素的高效性。

对于随机访问元素…

LinkedList的性能较差,因为它需要从列表的一端开始遍历。

因此,如果你需要…

频繁地在列表的开头或结尾,添加或删除元素的话…

那么LinkedList,可能是一个更好的选择。

3)Vector

Vector和ArrayList类似…

也是基于数组实现的,但它提供了线程安全的操作。

这是通过在每个公共方法上,添加同步来实现的…

因此,它可能会比ArrayList慢。

在现代Java编程中,我们通常更倾向于使用并发集合(如currentHashMap)…

或者,显式地同步代码块;

而不是使用Vector,因为同步的开销可能会比较大。

此外…

还有其它一些类,也实现了List接口,例如CopyOnWriteArrayList…

它适用于读多写少的并发场景。

至于选择哪个实现类,则取决于你的具体需求,比如访问模式、线程安全性、性能要求等。

16、判断下列语句是否正确,如果有错误,请指出错误所在?

List<Sht; a = new ArrayList<Sht;();

a.add(5);

答:正确。

在Java中,你可以创建一个ArrayList,它存储的元素类型是Short。

Short是Java的一个包装类,用于表示基本数据类型short的值。

当你调用“a.add(5);”时…

Java会自动将基本数据类型“int的5”,转换成包装类型Short。

因为,5在short的范围内(即-32768到32767)。

所以,可以安全地转换为Short。

因此,这段代码会成功地向ArrayList中…

添加一个Short类型的对象,其值为5。

这是自动装箱(autoboxing)的一个例子…

它是Java 5及以上版本,提供的一个特性;

允许在基本数据类型,和它们对应的包装类之间,进行自动转换。

17、A=10, B=20使得两值互换?

答:

1)中间变量:C = A; A = B; B = C.

2)A = A - B; B = B + A; A = B - A.

18、只移动一个数字,使62 - 63 = 1成立(不能移动符号)?

答:2的6次方- 63 = 1。

注意:要从“移动一个数字”的思维中抽离出来,考虑次方实现。

19、字符串面试的经典源码示例?

答:具体代码示例如下…

package .exam.prj.a.String;

/**

*@author AARON

*/

public class Stri {

\tpublic statiain(String[] args){

\t\t//

\t\t//判断生成几个对象

\t\t//\t\t

\t\t//生成2个对象. String Pool中生成一个对象“aaron”,Heap中生成一个对象“aaron”.

\t\tString strA = ring(“aaron“);\t\t

\t\t//未生成新对象.判断String Pool中是否存在“aaron”,存在则strB直接引用“aaron”对象.

\t\tString strB =“aaron“;

\t\t

\t\t//生成1个对象.在Heap中生成一个对象“aaron”.

\t\tString strew String(“aaron“);

\t\t

\t\tSystem.out.println(strA == strB);\t//\tfalse

\t\tSystem.out.println(strA == strC);\t//\tfalse

\t\tSystem.out.println(strB == strC);\t//\tfalse

\t\t// intern()返回在String Pool中存在的地址

\t\tSystem.out.println(strA == strA.intern());\t//\tfalse

\t\tSystem.out.println(strB == strB.intern());\t//\ttrue

\t\tSystem.out.println(strA.intern()== strtern());\t//\ttrue

\t\t//

\t\t//判断字符串变量的内存地址是否相等

\t\t//

\t\t

\t\tString aaron =“aaron“;

\t\tString aa =“aa“;

\t\tString ron =“ron“;

\t\t

\t\t//“aa“+“ron“,这是两个字符串常量相加,拼接结果为“aaron”,然后到String Pool中判断获得内存地址

\t\tSystem.out.println(aaron ==“aa“+“ron“);// true

\t\t

\t\t//“aa“+ ron,这是字符串常量和变量相加,拼接结果为“aaron”,然后在Heap中创建一个“aaron”对象

\t\tSystem.out.println(aaron ==“aa“+ ron);// false

\t}

}

......

以上,就是今天的分享啦!

希望,对你的求职面试,编程工作有那么一点点、一丢丢、一戳戳地帮助哈~

喜欢我分享的,就一键三连于我,可好?!

『加入书签,方便阅读』
热门推荐
模拟:身为无上巨头,托起人族半岛:我真是偶像星辰求生风暴之身1999华娱教父快去找你白月光吧半岛:唯一星热芭:你们都是来抢我老公的都市之罗小黑传奇涤凡尘
网站地图