在java中集合List,Set,Map,Properties的区别?

作者&投稿:甘中 (若有异议请与网页底部的电邮联系)
JAVA中几种集合(List、Set和Map)的区别~

Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List)。Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用 LinkedHashSet或者LinkedHashMap.总结:List有顺序有重复没有排序,set无重复有排序,map的key也和set一样。如果想跟List一样需要有插入元素的顺序,请使用LinkedHashSet或者LinkedHashMap。  List的功能方法  实际上有两种List: 一种是基本的ArrayList,其优点在于随机访问元素,另一种是更强大的LinkedList,它并不是为快速随机访问设计的,而是具有一套更通用的方法。  List : 次序是List最重要的特点:它保证维护元素特定的顺序。List为Collection添加了许多方法,使得能够向List中间插入与移除元素(这只推荐LinkedList使用。)一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和移除元素。  ArrayList : 由数组实现的List。允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。ListIterator只应该用来由后向前遍历ArrayList,而不是用来插入和移除元素。因为那比LinkedList开销要大很多。  LinkedList : 对顺序访问进行了优化,向List中间插入与删除的开销并不大。随机访问则相对较慢。(使用ArrayList代替。)还具有下列方法:addFirst(), addLast(), getFirst(), getLast(), removeFirst() 和 removeLast(), 这些方法 (没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。  Set的功能方法  Set : 存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。加入Set的元素必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。  HashSet : 为快速查找设计的Set。存入HashSet的对象必须定义hashCode()。  TreeSet : 保存次序的Set, 底层为树结构。使用它可以从Set中提取有序的序列。  LinkedHashSet : 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。  Map的功能方法  方法put(Object key, Object value)添加一个“值”(想要得东西)和与“值”相关联的“键”(key)(使用它来查找)。方法get(Object key)返回与给定“键”相关联的“值”。可以用containsKey()和containsValue()测试Map中是否包含某个“键”或“值”。标准的Java类库中包含了几种不同的Map:HashMap, TreeMap, LinkedHashMap, WeakHashMap, IdentityHashMap。它们都有同样的基本接口Map,但是行为、效率、排序策略、保存对象的生命周期和判定“键”等价的策略等各不相同。  执行效率是Map的一个大问题。看看get()要做哪些事,就会明白为什么在ArrayList中搜索“键”是相当慢的。而这正是HashMap提高速度的地方。HashMap使用了特殊的值,称为“散列码”(hash code),来取代对键的缓慢搜索。“散列码”是“相对唯一”用以代表对象的int值,它是通过将该对象的某些信息进行转换而生成的。所有Java对象都能产生散列码,因为hashCode()是定义在基类Object中的方法。  HashMap就是使用对象的hashCode()进行快速查询的。此方法能够显著提高性能。  Map : 维护“键值对”的关联性,使你可以通过“键”查找“值”  HashMap : Map基于散列表的实现。插入和查询“键值对”的开销是固定的。可以通过构造器设置容量capacity和负载因子load factor,以调整容器的性能。  LinkedHashMap : 类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是其插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点。而在迭代访问时发而更快,因为它使用链表维护内部次序。  TreeMap : 基于红黑树数据结构的实现。查看“键”或“键值对”时,它们会被排序(次序由Comparabel或Comparator决定)。TreeMap的特点在于,你得到的结果是经过排序的。TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。  WeakHashMao : 弱键(weak key)Map,Map中使用的对象也被允许释放: 这是为解决特殊问题设计的。如果没有map之外的引用指向某个“键”,则此“键”可以被垃圾收集器回收。  IdentifyHashMap : 使用==代替equals()对“键”作比较的hash map。专为解决特殊问题而设计。

  Java中的集合包括三大类,它们是Set、List和Map,它们都处于java.util包中,Set、List和Map都是接口,它们有各自的实现类。Set的实现类主要有HashSet和TreeSet,List的实现类主要有ArrayList,Map的实现类主要有HashMap和TreeMap。
  Set中的对象不按特定方式排序,并且没有重复对象。但它的有些实现类能对集合中的对象按特定方式排序,例如TreeSet类,它可以按照默认排序,也可以通过实现java.util.Comparator接口来自定义排序方式。
  List中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象,如通过list.get(i)方式来获得List集合中的元素。
  Map中的每一个元素包含一个键对象和值对象,它们成对出现。键对象不能重复,值对象可以重复。

List接口是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。
Set接口:定义一个不包含重复元素的规则。添加时候是没有顺序的。
Map接口:将键映射到值。一个映射不能包含重复的键,每个键最多只能映射到一个值。
Properties类是HashTable(实现了Map接口)的子类。HashTable是同步的。

List和set继承于Collection接口,Map不是。
List中的元素是无序的,可以重复。
Set是有序的,不能重复。
Map是已key和value的形式存储的,key不能重复,value可以重复。
最后一个没用过。

楼下说错了 List是有序的 Set应该是无序的 但是Treeset有序【特殊】 Hashset无序 谢谢 希望能帮到您


Java中是否可以声明一个数组,另其成员全都是一个List<Float>?
声明可以,但想赋值的时候会是这个样子Cannot create a generic array of List<Float> 下面这种方式是可以的,不会报错:List[] arr = {new ArrayList<Float>(),new ArrayList<Float>(),new ArrayList<Float>()};

collection是什么意思中文翻译
1、java.util.Collection 是一个 集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。Collection ├List │├LinkedList │├...

java里面<>的语法
泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。Java 程序中的一种流行技术是定义这样的集合,即它的元素或键是公共类型的,比如“String列表”或者...

如何用java获取中文拼音的首字母
import java.io.UnsupportedEncodingException;\/ 取得给定汉字串的首字母串,即声母串 Title: ChineseCharToEn date 2004-02-19 注:只支持GB2312字符集中的汉字 \/ public final class ChineseCharToEn { private final static int[] li_SecPosValue = { 1601, 1637, 1833, 2078, 2274,2302, 2433, ...

java算法问题 排列组合 给定一组字符串,产生所有可能的集合
这是我写的一个取组合的方法:package Combination.c3;import java.util.ArrayList;import java.util.List;public class Combinations { \/ 设有n个元素,组合数量有2的n次方种。对 0 到 2的n次方-1 中的每个数,考察其二进制位形式,位数为1代表相应元素加入 到组合,0则不加入该元素至组合。取...

在Java中判断数组中包含某个元素的几种方式的比较
直接上代码:package test.contain.lishaojie;import java.util.Arrays;import java.util.HashSet;import java.util.Set;public class TestContain { \/ param args \/ public static void main(String[] args) { \/\/ TODO Auto-generated method stub String[] arr = new String[] { "DD", "CC"...

如何利用java的jsoup将class为name的id全部取下来zhang,li,wang,
首先,<class="name",id="zhang">这个写法。。。我就没见过,这要说是xml吧,里面有逗号。要改为<class name="name" id="zhang" \/>才是一个合法的标签。假设你已经获得了Document doc,遍历到的idElev就是id所在的属性节点 Elements elements= doc.select("class.name");for (int i = 0; ...

JAVA中复制数组的方法是什么?求详解并举例子!光举例子不给
System.arraycoppy(sArray,int srcPos,dArray,int destPos,int length)该方法将指定的源数组sArray中的length个元素复制到目标数组dArray中,复制从原数组sArray的指定位置srcPos开始,把原数组中的元素复制到目标数组中,目标数组的位置从destPos位置处开始向后。复制数组举例:public class Li{ public ...

JAVA中复制数组的方法是什么?求详解并举例子!
System.arraycoppy(sArray,int srcPos,dArray,int destPos,int length)该方法将指定的源数组sArray中的length个元素复制到目标数组dArray中,复制从原数组sArray的指定位置srcPos开始,把原数组中的元素复制到目标数组中,目标数组的位置从destPos位置处开始向后。复制数组举例:public class Li{ public ...

java jsp 提示Type Invalid location of tag (li)
li标签位置有问题,嵌套在ul标签中即可,关掉JSP对HTML检查就行,这个不影响。

沅陵县17885699626: 在java中,set集合和list集合有什么相同点和不同点??? -
融善天新: 在网上看到一点,可能对你有所帮助 Set(集合): Set是最简单的一种集合.集合中的对象不按特定的方式排序,并且没有重复对象. Set介面主要实现了两个实现类: HashSet : HashSet类按照哈希演算法来存取集合中的对象,存取速度...

沅陵县17885699626: java中 List 与Set 有什么区别? -
融善天新: Java的集合类都位于java.util包中,Java集合中存放的是对象的引用,而非对象本身.Java集合主要分为三种类型:a.Set(集):集合中的对象不按特定方式排序,并且没有重复对象.它的有些实现类能对集合中的对象按特定方式排序.b.List(...

沅陵县17885699626: java中list和set的区别 -
融善天新: list和set都是集合容器,list是有序不唯一 ,set是无序唯一 这两种集合主要看你需要封装什么样的数据.希望能帮到你!

沅陵县17885699626: Java集合类List/Set/Map的区别和联系 -
融善天新: 常用的集合类有一下几种: List结构的集合类:ArrayList类,LinkedList类,Vector类,Stack类 Map结构的集合类:HashMap类,Hashtable类 Set结构的集合类:HashSet类,TreeSet类 Queue结构的集合:Queue接口 HashMap和Hashtable的区...

沅陵县17885699626: Java中Set 和List两个集合怎样互相转化 -
融善天新: 都来自一个接口,好像不能转换吧,但可以嵌套使用,他们底层都是数组.

沅陵县17885699626: java 中 collection 和set ,list -
融善天新: add方法是collection,但是set和list在实现collection接口时都有重写该方法,set和list的add方法不同就是最好的证明.api中有写到“如果 set 中尚未存在指定的元素,则添加此元素(可选操作).更确切地讲,如果此 set 没有包含满足 (e==null...

沅陵县17885699626: java中集合类List和Set集合中的一些方法的具体如何使用和具体分析: -
融善天新: 构造方法摘要 ArrayList()构造一个初始容量为 10 的空列表. ArrayList(Collection c)构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的. ArrayList(int initialCapacity)构造一个具有指定...

沅陵县17885699626: java中list,set和map 的区别 -
融善天新: Set,List,Map的区别 java集合的主要分为三种类型:Set(集) List(列表) Map(映射) 要深入理解集合首先要了解下我们熟悉的数组:数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),而JAVA集合可以存...

沅陵县17885699626: java中List集合的使用
融善天新: for( int i=0;i<list1.size();i++){ list2.add(list1.get(i)); } list1:小List list2:大List

沅陵县17885699626: Java中集合到底有什么用? -
融善天新: Java中,集合主要有List、Set和Map,我个人理解集合的主要作用是相当于一个容器,你可以在里面装你希望装的对象,可以是Java内置的类,也可以是自定义的类.再者,这些集合支持一些方便的操作,比如Set可以排除重复,Map可以快速检索等等.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网