关闭

Android面试之类集合问题总结

130人阅读 评论(0) 收藏 举报
分类:

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6177次
    • 积分:276
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类