Java数组和集合的使用---面试

  1. 如何理解数组在Java中作为一个类。
    关键考点:
    a) 数组的使用语法
    b) Java数组的数据存储的本质

使用数组的步骤:

  1. 声明数组,使用一个引用来操作数组。
  2. 使用new来关键字来为数组创建所需的内存空间,并且返回一个引用的值,还可以用{}符号来为数组赋值。
  3. 使用数组的下标对数组的值进行操作。

注意:
a) 数组的下标是从0开始的
b) Java为每一个数组对象提供了一个length属性,用于知道数组的长度。

答案:
Java的数组本质上是一个类,该类还保存了数据类型的信息。该类通过成员变量的形式来保存数据,并且通过[ ]符号,使用下标来访问这些数据。在处理基本数据类型数据时,数组保存的是变量的值,如果程序员未提供初始值,数组会把这些变量的值初始化为0;而处理引用类型时,数据保存的是数据的引用,如果程序员未提供初始值,数组会把这些变量的值初始化为null。

  1. new Object[5]语句是否创建了5个对象。

关键考点:
a) 数组的使用语法。
b) Java数组的内存构成机制。

答案:
否;题目的语句其实是创建了一个数组实例,长度为5,每个数组元素的值均是null,并没有创建5个Object对象。如果需要创建5个Object对象,则需要为每个数组元素分别指定。

  1. 如何拷贝数组的数据。

关键考点:
a) Java处理数组的数据存储的本质
b) System.arrarycopy()方法的使用。

答案:
使用System.arrarycopy()方法,或者创建一个新的数组实例,然后把数据一一装填进去,不能用=赋值运算符。

  1. 二维数组的长度是否固定。

关键考点:
a) Java处理数组的数据存储的本质。
b) 多维数组。

答案:
长度不固定。Java数组的长度是可以动态变化的,程序员可以任意扩展数组的维度。每一维度的元素个数都可以是不尽相同的。

  1. 什么是集合?

关键考点:
a) 集合框架的结构和内容。
b) 每种集合的用途。

答案:
集合是用来也只能存储其他对象的对象,代表了一种底层结构,用于扩展数组的功能。集合框架由一系列的接口和实现类组成,基本包括:List、Set、Map等,它们大多具有可迭代性和可比较性。

  1. 迭代器是什么?

关键考点:
a) 迭代的概念。
b) Iterator接口。

答案:
迭代器,提供一种访问一个集合对象中各个元素的途径,同时又不需要暴露该对象的内部细节。Java通过提供Iterable和Iterator两个接口来实现集合类的可迭代性。迭代器主要的用法就是,首先用hasNext()方法作为循环条件;再用next()方法得到每一个元素;最后再进行相关的操作。

  1. 比较器是什么?

关键考点:
a) Comparable接口。
b) Comparator接口。

答案:
比较器是把集合或数组的元素强行按照指定方法进行排序的对象,它是实现了Comparator接口类的实例。如果一个集合元素的类型是可比较的(实现了Comparable接口),那么它就具有了默认的排序方法,比较器则是强行改变它默认的比较方式来进行排序。或者有的集合元素不可比较(没有实现Comparable接口),则可用比较器来实现动态的排序。

  1. Vector与ArrayList的区别。

关键考点:
a) List接口的使用方法。
b) Vector的线程安全性。

答案:
Vector是线程安全的,因为它操作元素的方法都是同步方法,而ArrayList则不是。开发过程中应该根据需要进行选择,如果需要保证线程安全的地方就用Vector,而不必要的时候则无需使用Vector,因为ArrayList效率会高一些。

  1. HashMap和HashTable的区别。

关键考点:
a) Map接口的使用方法。
b) HashMap和HashTable的区别。

答案:
HashMap和HashTable的区别主要有以下几个方面:

  1. HashTable的方法是同步的,HashMap不能同步。
  2. HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
  3. HashTable有一个contains()方法,功能和containsValue()功能一样。
  4. HashTable使用Enumeration,HashMap使用Iterator。
  5. HashTable中hash数组的初始化大小及其增长方式不同。
  6. 哈希值的使用不同,HashTable直接使用对象的hashCode,而HashMap会重新计算hash值。
  1. 集合使用泛型带来了什么好处?

关键考点:
a) 泛型的概念和使用方法。
b) 泛型集合框架的使用方法。

答案:
集合使用泛型以后,可以达到元素类型明确的目的,避免了手动类型转换的过程,同时,也让开发者更加明确容器保存的是什么类型的数据。

  1. 如何把集合对象中的元素进行排序?

关键考点:
a) 集合框架的体系结构。
b) 集合排序的方法。

答案:
对于没有排序功能的集合来说,都可以使用java.util.Collections.sort()方法进行排序,它除了集合对象以外,还需要提供一个比较器。如果列表中的元素全都是相同类型的,并且这个类实现了Comparable接口,可以简单的调用Collections.sort()。如果这个类没有实现Comparator,就可以传递一个Comparator实例作为一个sort()的第二个参数进行排序。另外,如果不想使用默认的分类顺序进行排序,同样可以传递一个Comparator实例作为参数来进行排序。

  1. 符合什么条件的数据集合可以使用foreach循环

关键考点:
a) 迭代器的定义和使用。
b) Foreach的使用方法和原理。

答案:
数组或者实现了Iterable接口的类实例,都是可以使用foreach循环的。Java集合框架中集合类大多数都符合第二条,因此他们都是可以使用foreach循环的。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值