Java面试题之Java基础部分 61-70题

61List和 Map区别?

1List是存储单列数据的集合,map是存储键和值这样的双列数据的集合

2List中存储的数据是有顺序,并且允许重复;Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的

 

62List, Set, Map是否继承自Collection接口?

ListSet是,Map不是

 

63ListMapSet三个接口,存取元素时,各有什么特点?

 (1ListSet是存储单列数据的集合,Map是存储键和值这样的双列数据的集合

 (2ListSet具有相似性,它们都是单列元素的集合,所以,它们有一个功共同的父接口,叫CollectionList里面的元素有顺序可重复,Set里面的元素无顺序不可重复。Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的。

 (3Listset添加元素用add方法,Map添加元素用put方法

 

64、说出ArrayList,Vector, LinkedList的存储性能和特性

1ArrayList 是数组实现  它是线程不安全的。它每一次添加后都会增长50%长度。它在执行查找操作时效率比较高

2LinkedList 是链表实现它在执行修改或插入时效率比较高,是线程不安全的。

3Vector 它也是数组实现,它是线程安全的 它每一次添加后都会增长100%长度.无论是查找还是修改删除操作效率都比较低。

 

65、去掉一个Vector集合中重复的元素

Vector newVector = new Vector();

for (int i=0;i<vector.size();i++)

{

Object obj = vector.get(i);

if(!newVector.contains(obj);

newVector.add(obj);

}

还有一种简单的方式,HashSet set = new HashSet(vector);

 

66Collection和 Collections的区别。

1Collection是集合类的上级接口,继承与他的接口主要有SetList.

2Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

 

67Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?用 contains来区分是否有重复的对象。还是都不用?

1)在比较时先调用hashCode 方法,如果不相同,证明不相等。如果相同,再调用equals 方法,如果equals 方法相同,证明相等,不相同,证明不相等。

2==:主要用在基本数据类型及引用

    equals:主要是对象或对象引用的比较。

(3)集合中是否包含某一个元素用contains 来判断。

 

68、你所知道的集合类都有哪些?主要方法?

    最常用的集合类是 List 和 Map。 List的具体实现包括 ArrayList和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List适用于按数值索引访问元的素情形。

Map 提供了一个更通用的元素存储方法。 Map集合类用于存储元素对(称作""""),其中每个键映射到一个值。

    Listadd,remove, containsmapput,removecontains

 

69、两个对象值相同(x.equals(y) == true),但却可有不同的hashcode,这句话对不对?

对;如果对象要保存在HashSetHashMap中,它们的equals相等,那么,它们的hashcode值就必须相等。如果不是要保存在HashSetHashMap,则与hashcode没有什么关系了,这时候hashcode不等是可以的,例如arrayList存储的对象就不用实现hashcode

 

70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!

应该是没有针对问题的确切的答案,当前的add方法放入的是哪个对象,就调用哪个对象的compareTo方法,至于这个compareTo方法怎么做,就看当前这个对象的类中是如何编写这个方法的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值