Android面试之类集合问题总结

1.HashTable和HashMap的区别

(1)HashMap是线程不同步的,而HashTable是线程同步的,这就意味着HashMap在效率上要比HashTable的执行效率要高。但是如果你需要同步,那么选择HashTable是最好的。当然你也可以给HashMap提供同步。

(2)HashMap中允许存一个key为空的键值对,并且允许存多个value为空的键值对。

(3)HashTable中的contains方法实际调用了containsValue方法。而在HashMap中去掉了这个方法。

2.==,equals,hashcode的区别

==是判定两个对象的引用是否相等的

equals 因为是object中的方法,默认也是判断两个对象的引用地址是否一致,但是我们自己在定义一个类的时候可以重写这个方法,实际上在String Integer,Double这些类中均重写了equals方法。

hashcode方法则是快速的判断一个对象是否在某个小的内存中,好处就是在比较两个object是否相等的时候,可以先判断hashcode的值是否相等,如果相等则进一步再调用equals方法判断。如果hashcode都不相等,那么这两个值肯定是不相等的(之所以HashCode相等,但是equals却不一定相等是因为如果ObjectA A ObjectB B 但是这两个类都有同一name字段的话,而hashcode是根据name字段得出,那么在equals比较的时候,就会因为类型不一致)

3.为什么在重写equals的时候需要重写hashcode方法

假设 定义了一个类 Student,类中有一个字段name,我们 执行 HashSet<Student> set = new HashSet<Student>(); set.put(new Student("xiaoli")); set.put(new Student("xiaoli"));

当我们不重写hashcode的时候,如果我们向诸如HashSet之类的集合put对象的时候,首先会调用hashcode方法,如果你没有重写,那么这两个对象就会存放进去,这显然是不符合Hashset不能存放重复数据的原则,因此如果我们重写了HashCode方法,那么这两个对象得到的hashcode值是相同的,即不能放入set集合中。

另外因为hashcode可以迅速的判断对象所在的小内存,这样在比较对象的时候,或者是要插入对象的时候效率就会大大的提高。



4.下面哪一项不属于android的动画类型?  (D)
Tween
Alpha
Frame
Animation
B属于Tween动画的一种。

Tween(渐变动画)包含:alpha和scale
Frame(画面转换动画)包含:translate和rotate
5. Android系统对下列哪些对象提供了资源池
正确答案:AC
Message
Thread
AsyncTask
Looper
A.Message提供了消息池,有静态方法Obtain从消息池中取对象;
B.Thread默认不提供资源池,除非使用线程池ThreadPool管理;
C.AsynTask是线程池改造的,池里 默认提供(核数+1)个线程进行并发操作,最大支持(核数  * 2 + 1)个线程,超过后会丢弃其他任务;
D.Looper,每个Looper创建时创建一个消息队列和线程对象,也不是资源池;
因此答案为AC


下面哪一项不属于android的动画类型?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值