40道Java基础常见面试题及详细答案
|
虽然自己在前几天的时候看过HashMap的源码,感觉思路啥啥的都还清楚,对于多线程访问只知道HashMap是线程不安全的,但是不知道HashMap在多线程并发的情况下会产生死循环呢,为什么会产生,何种情况下才会产生死循环呢??? 《Java困惑》:多并发情况下HashMap是否还会产生死循环。 既然会产生死循环,为什么并发情况下,还是用ConcurrentHashMap。 jdk 好像有,但是Jdk8 已经修复了这个问题。 LinkedHashMap可以保证HashMap集合有序,存入的顺序和取出的顺序一致。 TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。 HashMap不保证顺序,即为无序的,具有很快的访问速度。?HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null。?HashMap不支持线程的同步。 我们在开发的过程中使用HashMap比较多,在Map中在Map 中插入、删除和定位元素,HashMap 是最好的选择。 但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。 如果需要输出的顺序和输入的相同,那么用LinkedHashMap 可以实现,它还可以按读取顺序来排列。 Collection?是集合类的上级接口,子接口主要有Set、List 、Map。 Collecions?是针对集合类的一个帮助类, 提供了操作集合的工具方法,一系列静态方法实现对各种集合的搜索、排序线性、线程安全化等操作。 例如
Collection Collection 是单列集合 List 元素是有序的、可重复。 有序的 collection,可以对列表中每个元素的插入位置进行精确地控制。 可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。 可存放重复元素,元素存取是有序的。 List接口中常用类 Vector:线程安全,但速度慢,已被ArrayList替代。底层数据结构是数组结构。 ArrayList:线程不安全,查询速度快。底层数据结构是数组结构。 LinkedList:线程不安全。增删速度快。底层数据结构是列表结构。 Set Set接口中常用的类 Set(集) 元素无序的、不可重复。 取出元素的方法只有迭代器。不可以存放重复元素,元素存取是无序的。 (编辑:PHP编程网 - 金华站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

