zoukankan      html  css  js  c++  java
  • Java集合类笔试题

    介绍Collection框架的结构

      Collection接口是单值存放的最大父接口,可以向其中保存多个单值的数据(所谓单值就是指集合中的每个元素都是一个对象)。其子接口主要有:List、Set、Queue和SortedSet。

        List:是Collection接口的子接口,也是最常用的接口。此接口对Collection接口进行了大量的扩充,里面的元素是允许重复的。

        set:不能存放重复的元素,所有重复的元素靠hashCode()和equals()两个方法区分。

        queue:队列接口。

        SortedSet:可以对集合中的数据进行排序。

    Collection框架中实现比较要实现什么接口?

      comparable/comparator

    ArrayList和Vector的区别

      这两个类都实现了List接口(List接口继承于Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,并且其中的数据是允许重复的,这是与Set类的集合的最大不同之处,Set类集不可以按索引号检索其中的元素,也不允许有重复的元素,,这些是废话。。。

       ArrayList与Vector的区别:

    比较点 ArrayList Vector
    推出时间 JDK 1.2之后推出的,属于新的操作类 JDK 1.0时推出,属于旧的操作类
    性能 采用异步处理方式,性能更高 采用同步处理方式,性能较低
    线程安全 属于非线程安全的操作类 属于线程安全的操作类
    输出 只能使用Iterator、foreach输出 可以使用Iterator、foreach、Enumeration输出

      

          Vector是线程安全的,也就是说它的方法之间线程同步的,而ArrayList是线程不安全的,它的方法之间是线程不同步的。如果只有一个线程会访问到集合,那最好使用ArrayList,因为它不考虑线程安全,效率会高些;如果有多个线程会访问到集合,那最好是使用Vector,因为不需要我们自己再去考虑和编写线程安全的代码。 

        备注:对于Vector&ArrayList、Hashtable&HashMap,要记住线程安全的问题,记住Vector与Hashtable是旧的,是java一诞生就提供了的,它们是线程安全的。ArrayList与HashMap是新的操作类,它们是线程不安全的。

        

    HashMap与Hashtable的区别:

      

    比较点 HashMap Hashtable
    推出时间 JDK 1.2之后推出,属于新的操作类 JDK 1.0时推出,属于旧的操作类
    性能 采用异步处理方式,性能更高 采用同步处理方法,性能较低
    线程安全 属于非线程安全的操作类 属于线程安全的操作类
    空键 允许将key设置为null 不允许将key设置为null,否则会出现NullPointerException异常

          

    List和Map的区别?

      一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合,List中存储的数据是有顺序的,并且允许重复;Map中存储的数据是没有顺序的,其键是不能重复的,但它的值是可以重复的。

     

    Collection和Collections的区别

      Collection是单值存放的最大父接口,是集合类的上级接口,继承自它的接口有List、Set、Queue和SortedSet。

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

     List和Set的区别:

      两者都继承自Collection接口

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

      Set集合内的元素是无序的,但元素不可以重复。

    ArrayList和LinkedList的区别

      1.ArrayList是实现了动态数组的数据结构,LinkedList基于链表的数据结构。

      2.对于随机访问get和set,很明显ArrayList的性能要优于LinkedList。

      3.对于增加和删除操作add和remove,LinkedList占优势。

      当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList性能比较好;当操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。

      

  • 相关阅读:
    关于防盗链
    原生php登陆注册
    thinkPHP的D方法和M方法用法和区别
    Python中类与对象的关系
    解决_CRT_SECURE_NO_WARNINGS 警告
    骨头汤、豆浆、海带都不能补钙,最补钙的食物是它
    蘑菇鸡蛋汤
    CString和string在unicode与非unicode下的相互转换(转)
    【CString与string转换】不存在从 "LPWSTR" 转换到 "std::basic_string<char, std::char_traits<char>, std::allocator(转)
    LINK : fatal error LNK1104: 无法打开文件“mfc71.lib”(转)
  • 原文地址:https://www.cnblogs.com/dazuihou/p/3583200.html
Copyright © 2011-2022 走看看