• java 集合(一)


    1.collection框架结构:

    集合框架(Collection Framework)泛指java.util包的若干个类和接口.如Collection,List,ArrayList,LinkedList,Vector(自动增长数组),HashSet,HashMap等.

    集合框架中的类主要封装的是典型的数据结构,如动态数组,链表,堆栈,集合,哈希表等.

    集合框架类似编程中经常用到的工具类,使得编码更专注于业务层的实现,不需要从底层实现相关细节—“数据结构的封装”和”典型算法的实现”.(有待于修改)

    2.collection框架中实现比较要实现什么借口:

    comparable/comparator(需要重点看一下)

    3.ArrayList和Vector的区别:

    相同点:

        1.ArrayList和Vector都实现了List接口,List借口继承Collection接口。

        2.他们都是有序集合,即存储在这两个集合中的元素都是有顺序的,相当于一种动态数组,可通过索引号取出某个元素。并且集合中元素可以重复。

    不同点:

        同步性:Vector是线程安全的,即他的方法之间是线程同步的,ArrayList是线程不安全的,即他的方法之间是线程不同步的。如果是一个线程会访问到集合使用ArrayList,因为它不考虑线程安全,效率高。如果是多个线程会访问到集合,使用Vector因为它不会考虑和编写程序安全代码。

        数据增长:Vector增长原来的一倍,ArrayList增长原来的0.5倍。

    4.hashMap和hashTable的区别:

        1.历史原因:HashTable基于陈旧的dictionary类的,HashMap是java 1.2引进的Map接口的一个实现。

        2.同步性:HashTable是线程安全的,也就是说是同步的,而HashMap是线程不安全的,也就是说是不同步的。

        3.值:HashMap允许将空值作为一个表的条目的key和value。

    5.List和Map的区别:

        一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合,List存储的数据是有顺序的,并且可以重复。May存储的数据是无序的,键不可以重复,值可以重复。

    6.List,Set,Map是否继承collection接口:

        List,Set继承Collection接口,Map不是。

    7.List,Set,Map的区别:

        List,Set是单列集合,都继承Collection接口。Set不允许有重复元素,只能用iterator接口取得所有元素,在逐一遍历。List允许重复,且是有序集合,除了使用iterator接口取得所有元素,逐一遍历外,还可以通过索引号来获取指定索引号的集合。

        Map是双列集合,可一键多指,无顺序。

    8.说出ArrayList,Vector,LinkedList存储的性能和特性:

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

        linkedList也是线程不安全的,linkedList提供了一些方法,使得LinkedList可以被当做堆栈和队列来使用。

    9.去掉一个Vector集合中重复的元素:

    Vector newVector = new Vector();
    For (int i=0;i<vector.size();i++)
    {
    Object obj = vector.get(i);
    if(!newVector.contains(obj);
    newVector.add(obj);
    }

    10.collection和collections的区别:

    collection是集合类的上级接口,继承于它的接口有Set和List。

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

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

    Set里的元素是不能重复的,元素重复与否是使用equals()方法进行判断的。

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

    12.你所知道的集合类有哪些?主要方法?

    最常用的集合类有List和Map。List具体实现包括ArrayList和Vector,他们是可变大小的列表,比较适合构建,存储和操作任意类型对象的元素列表。List适用于按数值索引访问元素的情形。Map提供了一个更通用的元素存储方法。Map集合类用于存储元素对(键,值),其中每一个键映射到一个值。

    对于Set,有add,remove,contains;对于Map,有put,remove,contains;List有get(int index)这样的方法,因为它可以按顺序取元素,而set中没有get(int index)方法;List和set都可以迭代出所有元素,迭代时先要得到一个iterator对象,所以List和Set都有一个iterator方法用于返回Iterator对象;map可以返回三个集合,一个是返回所有Key的集合,一个是返回所有Value的集合,在一个是返回Key和Value组成的EntrySet对象的集合,May也有get方法,参数是Key,返回值是Key对应的Value。   

    13.两个对象相同(x.equals(y)==true),但却可能有不同的hashCode,这句话对不对?

    对,如果对象要保存在HashMap或HashSet中,他们的equals相等,那么他们的hashCode也一定相等。如果不保存在HashSet或HashMap中,于hashcode无关。

    14.TreeSet 里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的 compareTo  方法,还是使用的子类的 compareTo 方法,还是抛异常:

  • 相关阅读:
    angular2学习
    随笔
    angular 中ng-repeat后ng-click失效
    一个hover效果
    获取屏幕高度
    延时加载 lazyload使用技巧
    关于MVC模板渲染的一点小事type="text/template"
    JsRender实用教程(tag else使用、循环嵌套访问父级数据)
    jQuery Validate 插件为表单提供了强大的验证功能
    日期时间选择器bootstrap-datetimepicker表单组件
  • 原文地址:https://www.cnblogs.com/hxg-yw/p/4020235.html
Copyright © 2020-2023  润新知