当前位置:首页 > 芯闻号 > 充电吧
[导读]常用数据结构 List set map转载地址:http://www.blogjava.net/EvanLiu/archive/2007/11/12/159884.html下面是我自己画的,关系画得没

常用数据结构 List set map

转载地址:http://www.blogjava.net/EvanLiu/archive/2007/11/12/159884.html下面是我自己画的,关系画得没上面好,但我自己看着清楚些还有一张下载来的: 有序否允许元素重复否Collection否是List是是SetAbstractSet否否HashSetTreeSet是(用二叉树排序)MapAbstractMap否使用key-value来映射和存储数据,Key必须惟一,value可以重复HashMapTreeMap是(用二叉树排序)几个面试常见问题:
1.Q:ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?
   A:Vector和HashTable是线程同步的(synchronized)。性能上,ArrayList和HashMap分别比Vector和Hashtable要好。

2.Q:大致讲解java集合的体系结构
   A:List、Set、Map是这个集合体系中最主要的三个接口。
      其中List和Set继承自Collection接口。
      Set不允许元素重复。HashSet和TreeSet是两个主要的实现类。
      List有序且允许元素重复。ArrayList、LinkedList和Vector是三个主要的实现类。
      Map也属于集合系统,但和Collection接口不同。Map是key对value的映射集合,其中key列就是一个集合。key不能重复,但是value可以重复。HashMap、TreeMap和Hashtable是三个主要的实现类。
      SortedSet和SortedMap接口对元素按指定规则排序,SortedMap是对key列进行排序。

3.Q:Comparable和Comparator区别
    A:调用java.util.Collections.sort(List list)方法来进行排序的时候,List内的Object都必须实现了Comparable接口。
        java.util.Collections.sort(List list,Comparator c),可以临时声明一个Comparator 来实现排序。
        Collections.sort(imageList, new Comparator() {
            public int compare(Object a, Object b) {
                int orderA = Integer.parseInt( ( (Image) a).getSequence());
                int orderB = Integer.parseInt( ( (Image) b).getSequence());
                return orderA - orderB;
           }
        });
        如果需要改变排列顺序
        改成return orderb - orderA 即可。

4.Q:简述equals()和hashCode()
    A:...不知道。下回分解

public interface Collection             extends Iterable


public interface List            extends Collection


public abstract class AbstractList             extends AbstractCollection
            implements List


public classVector             extends AbstractList 
            implements List, 
                                   RandomAccess, 
                                   java.lang.Cloneable, 
                                   java.io.Serializable基于Array
是“sychronized”的


public class ArrayList 
        extends AbstractList
        implements List, 
                          RandomAccess, 
                          Cloneable, 
                          java.io.Serializable
基于ArrayArrayList是非同步的。所以在性能上要比Vector优越一些


public class LinkedList        extends AbstractSequentialList
        implements List, 
                          Queue, 
                          Cloneable, 
                          java.io.Serializable
不基于Array基于Array的List(Vector,ArrayList)适合查询,而LinkedList(链表)适合添加,删除操作




List基本上都是以Array为基础。但是Set则是在HashMap的基础上来实现的,这个就是Set和List的根本区别
public abstract class AbstractSet     extends AbstractCollection 
    implements Setpublic class HashSet    extends AbstractSet
    implements Set, Cloneable, java.io.SerializableHashSet的存储方式是把HashMap中的Key作为Set的对应存储项public class LinkedHashSet    extends HashSet
    implements Set, Cloneable, java.io.Serializable


public class TreeSet    extends AbstractSet
    implements SortedSet, Cloneable, java.io.Serializable它是通过SortedMap来实现的public interface Mappublic abstract class AbstractMap 
    implements Mappublic class HashMap    extends AbstractMap    implements Map, Cloneable, Serializable


public class TreeMap    extends AbstractMap    implements SortedMap, Cloneable, java.io.Serializable

HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)

看到百度知道里面有个回复比较的好,先复制过来:地址为http://zhidao.baidu.com/question/16113509.html
提问是:谁能说说Java中的Set List Map存储方式个各有什么不同?
List接口对Collection进行了简单的扩充,它的具体实现类常用的有ArrayList和LinkedList。你可以将任何东西放到一个List容器中,并在需要时从中取出。ArrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快,而LinkedList的内部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作。在具体应用时可以根据需要自由选择。前面说的Iterator只能对容器进行向前遍历,而ListIterator则继承了Iterator的思想,并提供了对List进行双向遍历的方法。   
Set接口也是Collection的一种扩展,而与List不同的时,在Set中的对象元素不能重复,也就是说你不能把同样的东西两次放入同一个Set容器中。它的常用具体实现有HashSet和TreeSet类。HashSet能快速定位一个元素,但是你放到HashSet中的对象需要实现hashCode()方法,它使用了前面说过的哈希码的算法。而TreeSet则将放入其中的元素按序存放,这就要求你放入其中的对象是可排序的,这就用到了集合框架提供的另外两个实用类Comparable和Comparator。一个类是可排序的,它就应该实现Comparable接口。有时多个类具有相同的排序算法,那就不需要在每分别重复定义相同的排序算法,只要实现Comparator接口即可。集合框架中还有两个很实用的公用类:Collections和Arrays。Collections提供了对一个Collection容器进行诸如排序、复制、查找和填充等一些非常有用的方法,Arrays则是对一个数组进行类似的操作。Map是一种把键对象和值对象进行关联的容器,而一个值对象又可以是一个Map,依次类推,这样就可形成一个多级映射。对于键对象来说,像Set一样,一个Map容器中的键对象不允许重复,这是为了保持查找结果的一致性;如果有两个键对象一样,那你想得到那个键对象所对应的值对象时就有问题了,可能你得到的并不是你想的那个值对象,结果会造成混乱,所以键的唯一性很重要,也是符合集合的性质的。当然在使用过程中,某个键所对应的值对象可能会发生变化,这时会按照最后一次修改的值对象与键对应。对于值对象则没有唯一性的要求。你可以将任意多个键都映射到一个值对象上,这不会发生任何问题(不过对你的使用却可能会造成不便,你不知道你得到的到底是那一个键所对应的值对象)。Map有两种比较常用的实现:HashMap和TreeMap。HashMap也用到了哈希码的算法,以便快速查找一个键,TreeMap则是对键按序存放,因此它便有一些扩展的方法,比如firstKey(),lastKey()等,你还可以从TreeMap中指定一个范围以取得其子Map。键和值的关联很简单,用pub(Object key,Object value)方法即可将一个键与一个值对象相关联。用get(Object key)可得到与此key对象所对应的值对象。
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

南京2022年10月27日 /美通社/ -- 10月18日,由南瑞集团主导编制的IEC国际标准《电动汽车充电漫游服务信息交互 第2部分:用例》(IEC 63119-2:2022)正式发布。该标准的发布是南瑞集团在国际电动...

关键字: 电动汽车充电 充电站 数据结构 电动汽车电池

大家都听说过红黑树,也都知道红黑树很厉害,是计算机里面评价非常高的数据结构。但是每当想学习红黑树的时候,却总是找不到通俗易懂很好理解的学习资料。很多书上上来就是红黑树的定义,然后就是红黑树的实现,直接就把人给整晕了。光看...

关键字: 计算机 数据结构 红黑树

(全球TMT2022年7月11日讯)7月7日,由径硕科技(JINGdigital)主办、MEC睿达会承办的“万数有灵·2022中国数字营销创新增长峰会”在深圳举行。作为一家营销科技公司,径硕科技提供的是一流的营销软件产...

关键字: CE DIGITAL 数字化 数据结构

Redis为什么那么快?除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis能高效的处理。因此,这次我们就来好好聊一下Redis数据结构,...

关键字: 数据结构 REDIS 字符串 节点

哈喽,大家好,我是瓜哥,致力于分享互联网各领域干货。前几天,有人问瓜哥,学习编程语言有什么好的建议没?今天简单和大家分享几点学习编程的建议,希望可以帮助到大家。1.只要开始,就不要怕晚瓜哥经常看到这些问题,大四学编程还来...

关键字: 编程 代码 基础知识 数据结构

模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其内部特性。

关键字: 模块化 软件模块 数据结构

大家好,我是小林。前几天发了一篇「为了拿捏Redis数据结构,我画了20张图」,收获了很多好评,但是当时急于发文,有些地方没有写完,也有些地方写的不是很完善。然后我最近花了很多时间来完善文章,不仅加入了Redis新版本的...

关键字: 数据结构 REDIS 节点 字符串

大家好,我是小林。Redis为什么那么快?除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis能高效的处理。因此,这次我们就来好好聊一下R...

关键字: 数据结构 REDIS

Redis为什么那么快?除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis能高效的处理。因此,这次我们就来好好聊一下Redis数据结构,...

关键字: 数据结构

前几天,小灰给大家介绍了什么是算法。说到算法,就不能不说起数据结构。今天我来讲一讲,什么是数据结构?程序员怎么学好数据结构?我们介绍算法的时候说过,计算机当中的算法,本质就是一系列程序指令,用以解决特定的运算和逻辑问题。...

关键字: 数据结构
关闭
关闭