• 集合


    1,java中的集合体系?

      先描述集合的单双例,在从集合的顶层接口开始说起

      

      集合中框架的接口图

      http://img.blog.csdn.net/20151214201612335

      集合中框架的类图

      http://img.blog.csdn.net/20151214201619661

      集合中框架的遗留图

      这里写图片描述

      总体大图

      

    2,Set和List的异同?

      set:是无序唯一的,不可以有重复的值,可以包含null;

      List:是有序的,可以有重复的值,有null;

    3,HashSet和TreeSet排序的区别?

      HashSet如何保证元素的唯一性?

        重写hashcode和equals方法,如果hashcode的值相同,判断equals;如果值不同,则不判断equals.

      TreeSet的排序方式?

        有两种方法:

          一种是自然排序,元素实现comparable接口,

          另一种是比较器排序,构造方法接收comparator实现类对象

    4,ArrayList,Vector和LinkedList的区别?

      ArrayList:底层是数组,查询快.增删慢,线程不安全,效率高.

      Vector:底层是数组,查询快,增删慢,线程安全,效率低.

      LinkedList:底层是链表,查询慢,增删快.线程不安全,效率高.

      本质区别:

        Arraylist和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,他们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据块而插入数据慢,Vector由于使用了Synchronized方法(线程安全),通常性能上Arraylist差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前后或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度比较快

    5,Hashtable与HashMap的区别?

      Hashtable是线程安全的,不可以有NULL值和NULL键

      HashMap是线程不安全的,可以有NULL值和NULL键 

      Hashtable继承自Dictionary类,而HashMapJava1.2引进的Map interface的一个实现。

    最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步(如果是ArrayListList lst = Collections.synchronizedList(new ArrayList());如果是HashMapMap map = Collections.synchronizedMap(new HashMap());)。

    HashtableHashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

      线程安不安全的原因如下:

        JAVA API对HashMap的介绍 *注意,此实现不是同步的。如果多个线程同时访问此映射,而其中至少一个线程从结构上修改了该映射,则它必须 保持外部同步。(结构上的修改是指添加或删除一个或多个映射关系的操作;仅改变与实例已经包含的键关联的值不是结构上的修改。)这一般通过对自然封装该映射的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedMap 方法来“包装”该映射。最好在创建时完成这一操作,以防止对映射进行意外的不同步访问,如下所示:
     Map m = Collections.synchronizedMap(new HashMap(…));*

    6,Collection和Collections的区别?

      Collection是集合类的上级接口,继承与他的接口主要有Set和List

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

    7,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?有何区别?

      Set里的元素是不能重复的,用iterator()来区分重复与否,equals()是判断两个Set是否相等

      equals()和==方法决定引用值是否指向同一对象,equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相匹配的话,返回真值.

    8,构造器Constructor是否可被override?

      构造器Constructor不能被继承,因此不能重写Overriding,但是可以被重载OverLoading.

    9,List,Map,Set三个接口,存取元素时,各有什么特点?

      list以特定的次序来持有元素,可以有重复元素,

      set不能有重复元素,属于内部排序.

      Map保存key-value,value可多个值.

      

  • 相关阅读:
    遍历进程,获取当前进程下进程的路径.(获得全路径)
    获得当前EIP的值
    反调试收集网址,待更新.
    python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍
    python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍
    【Unity】2.4 层次视图(Hierarchy)
    【Unity】2.3 项目浏览器和资源的组织
    破解Unity5.3.4f1
    【Unity】2.2 Unity编辑器中的常用菜单项
    【Unity】2.1 初识Unity编辑器
  • 原文地址:https://www.cnblogs.com/luhan777/p/6576431.html
Copyright © 2020-2023  润新知