谁知道Map,Set,List之间区别 map: 使用key-value方式存储,如,HashTableset: 持有的数据项不存在顺序关系,因此,不能有重复的数据项List: 与set区别,有顺序 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 map是一个映射,有:hashtable,hashmap等,其中hashtable是老版本中的,key值不可以是空,hashmap的key值可以是空。key值必须实现了equals方法。set是一个集合,无序的。就象一个袋子,扔进去就可以了list应该是一个有序的表,比如:ArrayList,Vector等。vector是唯一一个支持同步的集合类。arraylist类似vector,但不支持同步。另外还有很多,就不一一叙述了。比如堆栈也是继承了vector,但是是实现了后进先出。 楼上的,讲的不错,但-----------------比如堆栈也是继承了vector,但是是实现了后进先出。-----------------这句没搞懂啊! Stack类确实是继承自Vector只是这个实现似乎有点问题,个人认为用修饰而非继承会更合适一些,用继承就把若干Stack不该有的方法也暴露为public了,如果不注意用了可能会出现一些诡异的场面 ^_^1.0版的类就是信不过,呵呵。也不是只有vector支持同步Collections类有三个内部类分别实现了List,Set,Map,可以通过synchronizedXXX()一系列方法使用,实现方式是典型的修饰不继承。 就是你去看stack的源码会发现它里面用的是vector来实现的楼主可以去看看thinking in java里关于collection里的一章 不是“里面用的是vector来实现的”的问题看API的javadoc,它会告诉你是继承了Vector个人认为这是一个有问题的实现,换成有一个List变量、4个访问方法同步,会比较好一点。 set和list实现了collection接口,map没有list可以不唯一 eureka0891() 说的对,thinking in java里讲的很好的,“第九章 持有你的对象” 楼上几个讲了,但是有误首先三个都是接口Map 映射表, 一个key只能对应一个value(它的反命题,一个value只对应一个key不成立)最常用的有:Map L--- HashMap (key可以null) L--- HashTable (key不能为null) L---Properties (适合读取.properties格式的文件) L--- SortedMap(interface根据Key排序) L---TreeMap(用二叉树实现key排序)List 和 Set 都是线性的,主要区别是List里面存放的内容可以重复,而Set同一对象只保留唯一的一个。因此,Map里面,提取Key集合的返回类型是Set,而提取Value集合的类型是Collection(List/Set)的父类型。常用的有List L---LinkedList(链表) L---ArrayList(动态数组,所有方法不同步) L---Vector(动态数组,所有方法同步) L---Stack(可以实现LIFO的栈)既然提到了Vector/Stack我认为Stack当初直接作为Vector的子类,而不是一个接口,应该算个败笔。因为所有的get(int)/set(int,Object)都暴露在外,破坏了Stack的LIFO规则。虽然在使用的时候可以注意,避免使用这些方法,但是总归是危险的漏洞 Java 编程题目,关于车类的(在线等哦,亲) JAVASE 图片按钮 一个jprograssbar更新的问题 在线求救大侠们,如何给容器设置背景图片? 急! 在 SWT 中如何判断当前系统主题! 如 xp 或 windows经典! 面试的时候被问:vector中最多可以装多少对象?晕了 “hello world!”---我的第一个JAVA程序 初学者的问题,怎样在applet中实现超级连接? 请问:谁能介绍一本JAVA网络编程方面的书?我看过欧里莱的简体中文版,很多地方看不明白。。。 JAVA开发什么方面比较有前途?? 程序问题请进在线等 panel问题
set是一个集合,无序的。就象一个袋子,扔进去就可以了
list应该是一个有序的表,比如:ArrayList,Vector等。vector是唯一一个支持同步的集合类。arraylist类似vector,但不支持同步。另外还有很多,就不一一叙述了。比如堆栈也是继承了vector,但是是实现了后进先出。
-----------------
比如堆栈也是继承了vector,但是是实现了后进先出。
-----------------
这句没搞懂啊!
只是这个实现似乎有点问题,个人认为用修饰而非继承会更合适一些,用继承就把若干Stack不该有的方法也暴露为public了,如果不注意用了可能会出现一些诡异的场面 ^_^
1.0版的类就是信不过,呵呵。也不是只有vector支持同步
Collections类有三个内部类分别实现了List,Set,Map,可以通过synchronizedXXX()一系列方法使用,实现方式是典型的修饰不继承。
看API的javadoc,它会告诉你是继承了Vector
个人认为这是一个有问题的实现,换成有一个List变量、4个访问方法同步,会比较好一点。
最常用的有:
Map
L--- HashMap (key可以null)
L--- HashTable (key不能为null)
L---Properties (适合读取.properties格式的文件)
L--- SortedMap(interface根据Key排序)
L---TreeMap(用二叉树实现key排序)List 和 Set 都是线性的,主要区别是List里面存放的内容可以重复,而Set同一对象只保留唯一的一个。因此,Map里面,提取Key集合的返回类型是Set,而提取Value集合的类型是Collection(List/Set)的父类型。常用的有
List
L---LinkedList(链表)
L---ArrayList(动态数组,所有方法不同步)
L---Vector(动态数组,所有方法同步)
L---Stack(可以实现LIFO的栈)既然提到了Vector/Stack我认为Stack当初直接作为Vector的子类,而不是一个接口,应该算个败笔。
因为所有的get(int)/set(int,Object)都暴露在外,破坏了Stack的LIFO规则。虽然在使用的时候可以注意,避免使用这些方法,但是总归是危险的漏洞