• List和Set相关面试题


    1. ArrayList 和 LinkedList 的的相同点和不同点分别是什么?

    相同点

    • ArrayList 和 LinkedList 都是 List 接口的实现类,因此都具有 List 的特点,即存取有序,可重复;而且都不是线程安全的。

    不同点

    • ArrayList 基于数组实现,LinkedList 基于双向链表实现。

    ArrayList 适合查询多(读多)的场景,LinkedList 适合插入多(写多)的场景。

    2. List、Set、Map 之间的区别是什么?

    • List 是有序集合,可以重复元素

    • Set 集合不能包含重复元素,实现类LinkeHashSet按照插入顺序排序,SortedSet可排序,HashSet无序。

    • Map 存放键值对 (key-value pairs) 映射,映射关系可以是一对一或多对一,key 无序且唯一,value 可重复。实现类中 LinkedHashMap 按照插入顺序排序,SortedMap 可排序,HashMap 无序。

    其次,Map 与 List 和 Set 不同,它是双列的集合,值得注意的是并不继承 Collection。

    3. ArrayList 和 LinkedList 都不是线程安全的,那有线程安全的 List 类吗?

    ​ 线程安全 List 类有 Vector 和 CopyOnWriteList。

    • Vector 是通过在其几乎所有方法前加 synchronized 关键字来保证线程安全性;
    • CopyOnWriteList 则是通过数组复制的方法来保证线程安全的。
  • 相关阅读:
    dijkstra算法模板 -- 最短路
    0-1背包
    POJ 1456-Supermarket(贪心+并查集)
    CodeForces 556C
    CodeForces
    POJ 2253-Frogger(Floyd变形)
    POJ 1251-Jungle Roads(最小生成树)
    HDU 1846-Brave Game(巴什博弈)
    HDU 1233-还是畅通工程(经典最小生成树)
    51Nod 1649-齐头并进(最短路dijkstra)
  • 原文地址:https://www.cnblogs.com/masters-/p/12902044.html
Copyright © 2020-2023  润新知