zoukankan      html  css  js  c++  java
  • 集合

    Java集合类框架的基本接口有那些?

    java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类.java集合类里面的最基本的接口有:

    Collection:代表一组对象,每一个对象那个都是它的子元素

    Set:不包含重复元素的Collection

    List:有顺序的collection,并且可以包含重复元素

    Map:可以把键(key)映射到值(value)的对象,键不能重复.

    为什么集合类没有实现Cloneable和Serializable接口?

    克隆(cloning)或者是序列化(Serialization)的语义和含义是跟具体的实现相关的.因此,应该由集合类的具体实现来决定如何被克隆或者是序列化.

    什么是迭代器?

    Iterator接口库提供了很多对集合元素进行迭代的方法.每一个集合类都包含了可以返回迭代器实例的迭代方法.迭代器可以在迭代的过程中删除底层集合的元素,但是不可以直接调用集合的remove(Object obj)删除,可以通过迭代器的remove()方法删除.

    Iterator和ListIterator的区别是什么?

    Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List

    Iterator对集合只能是向前遍历,listIterator既可以向前也可以向后

    ListIterator实现了Iterator接口,并包含其他的功能,比如:增加元素,替换元素,获取前一个和后一个元素的索引,等等.

    hashcode()和equals()方法的重要性体现在什么地方?

    java中的HashMao使用hashCode()和equals()方法来确定键值对的多音,当根据键获取值的时候也会用到这两个方法.如果没有正确的实现这两个方法,两个不通的键可能会有相同的hash值,因此,可能会被集合认为是相等的,而且,这两个方法也用来发现重复元素,所以这两个方法的实现对HashMap的精确性和正确性是至关重要的.

    HashMap和Hashtable有什么区别?

    HashMap和Hasntable都实现了Map接口,因此很多特性非常相似.但是,他们有以下不不同点:

    1.HashMap云粗键和值是null,而Hashtable不循序键或者值是null.

    2. Hahtable是同步的,而HashMap不是,因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境

    ArrayList和LinkedList有什么区别?

    ArrayList和LinkedList都实现了List接口,他们有以下的不同点:

    ArrayList是基于索引的数据接口,它的底层是数组,它可以以O(1)时间复杂度对元素进行随机访问,因此查询基于元素的时间段.与此对应,LinkedList是以元素列表的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起.在这种情况下,查找某个元素的时间长.

    相对于ArrayList,LinkedList的插入,添加,删除操作速度更快,因为当元素被添加到集合任意位置的时候,不需要像数组重新计算大小或者是更新索引.

    Comparable和Comparator接口是干什么的?列出他们的区别.

    java提供了只包含了一个compareTo()方法的Comparable接口.这个方法可以给两个对象排序.具体来说,它返回负数,0,正数来表明输入对象小于,等于,大于已经存在的对象.Java提供了包含compare()和equals()两个方法的Comparator接口,compare()方法用来给两个输入参数排序,返回负数,0,正数表明第一个参数是小于,等于,大于第二个参数.equals()方法需要一个独享作为参数.它用来决定输入参数是否和comparator相等.只有当输入参数也是一个comparator并且输入参数和当前comparator的排序结果是相同的时候,这个方法才返回true.

    Enumeration接口和Iterator接口的区别有那些?

    Enumeration速度是Iterator的2倍,同时占用更少的内存.

    但是Iterator远远比Enumeration安全.因为其他线程不能够修改正在被Iterator遍历的集合里面的对象.同时,Iteratot允许调用者删除底层集合里面的元素,这对Enumeration来说是不可能的.

    HashSet和TreeSet有什么区别?

    Treeset中的数据是自动排好序的,不允许放入null值.

    HashSet中的数据是无序的,可以放入null,但是只能放入一个null.两者中的值都不能重复,就如数据库中唯一约束.

    HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的String对象,hashcode是一样,所以放入的内容不能重复,但是同一个类的对象可以放入不同的实例.

  • 相关阅读:
    asp.net 通过Global.asax 定时执行web应用中的的程序
    asp.net 小东西,备忘
    Running Ajax.NET Professional (AjaxPro) under ASP .NET MVC(转)
    Silverlight仿Flash换肤一种简单实现方法
    [转]silverlight中的socket编程注意事项
    四月雨带来五月花
    我的六月
    我的夜
    我的七月
    我们站在毕业的面前 这里是不是成熟的分界线
  • 原文地址:https://www.cnblogs.com/qingmuchuanqi48/p/10714753.html
Copyright © 2011-2022 走看看