A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

今天我们学习了Map集合,请根据自己的理解回答下面问题:
1.Map接口下有几个子类,各自有什么特点?
2.目前为止,我们所学的遍历map集合有几种方式?
3.请用自己的语言描述你所了解的集合体系

41 个回复

正序浏览
今天我们学习了Map集合,请根据自己的理解回答下面问题:
1.Map接口下有几个子类,各自有什么特点?Map接口下常用的子类有HashMap和LinkedMap两个;
HashMap的特点:底层是哈希表结构,查询速度快,元素的存取顺序不能保证一致,并且键的值不能重复,值的值可以重复.
键和值可以存引用类型数据也可以存对象;但是,为了要保证键的唯一性,所以需要重写键值的hashCode()方法和equals()方法;
LinkedMap是HashMap的子类,底层在哈希表的基础上多加了一条链表来保证元素存取顺序一致.与HashMap一样,键值不能
重复,键和值可以存引用类型数据也可以存对象;LinkedMap通过哈希表结构保证键的唯一性,需要重写键值的hashCode()方法和equals()方法;

2.目前为止,我们所学的遍历map集合有几种方式?
有两种方式遍历map集合,一种是通过键找值的方式,一种是通过获取键值对的方式;
键找值: (1)调用KeySet方法获取map的所有键值,存入Set集合中;
            (2)遍历Set集合,通过map集合的get()方法获取每个键对应的值
键值对:(1)调用map集合的entrySet()方法获取集合中的所有键值对对象,存入Set集合中;
           (2)利用迭代器或者增强for遍历Set集合中的键值对对象;
           (3)键值对对象调用getKey()方法和getValue()方法获取键和值

3.请用自己的语言描述你所了解的集合体系

从顶层接口来看,分为Collection和Map两大接口;
Collection下又分为List和Set两大类,
(1)List集合的特点是存取有序,有索引值及其相关方法,元素可以重复;
List下有两大常用子类ArrayList和LinkedList;
ArrayList底层采用数组存储元素,所以特点是查询快,增删慢;
LinkedList底层采用链表结构,所以特点是查询慢,增删快;
两个子类看需求情况使用,还有一个比较老的子类Vector已经不怎么使用,特点是安全,效率低;
(2)Set集合的特点是元素存取无序,并且元素不能重复,没有索引;
Set集合下有两个常用子类HashSet和LinkedSet;
HashSet类的特点是元素存取无序,并且不能重复,具有良好的存取和查找性能;
LinkedSet类的特点是底层采用哈希表加链表的结构来实现元素存取有序,元素同样不可重复;

Map又称为双列集合,集合中的每个元素包含键和值两个部分,并且一一对应,键值唯一不能重复,值可以重复,
键和值都可以存放引用类型或对象,
Map接口下常用的实现类有HashMap集合、LinkedHashMap集合
HashMap集合存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需
要重写键的hashCode()方法、equals()方法
LinkedHashMap :HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链
表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的
hashCode()方法、equals()方法。

回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?        HashMap:HashMap底层采用哈希表结构来实现的,HashMap是一个无序的集合(无序是说存储和取出的顺序不一致),他保存的是Key和Value的键值对,在HashMap中,键是需要保证唯一的,如果有相同的键,那么,等同于List集合中的Set方法,他会把具有相同键值的Value值改成后面添加的数据.他的Value可以重复.如果要使用HashMap存储自定义的类型,那么要重写hashCode()方法和equals()方法,来确定键值的唯一性.
         LinkedHashMap:LinkedHashMap是HashMap的子类,LinkedHashMap底层是使用哈希表结构加链表结构来实现的,LinkedHashMap是有序的,它使用链表来保证元素的存取顺序是有序的.LinkedHashMap也是要保证Key值得唯一性,他也可以存储自定义的数据类型.也要重写hashCode()方法和equals()方法,来确定键值的唯一性.
2.目前为止,我们所学的遍历map集合有几种方式?
         keySet()方法,他把Map中所有的键取出,放在Set集合中,然后使用增强for取出在Set集合中的键值,然后通过get()方法取出对应的值.实现遍历Map集合的目的;
         entrySet()方法,直接成对的取出Key和Value的值并把他们封装成键值对对象,然后使用增强for和entrySet()方法提供的getKey()方法和getValue()方法取出Key和Value,也能实现遍历Map集合的目的;
3.请用自己的语言描述你所了解的集合体系


          分为了Collection接口下的集合和Map集合,Collection的集合又分为List集合和Set集合;
          List集合分为ArrayList,和LinkedArrayList还有远古时期遗留的Vactor.List接口下的集合的特点为:有索引,可重复,有序的(存储和取出的顺序是一致的).
          每个子类都有自己的特点,ArrayList的特点为查找速度快,因为他的底层是数组实现,有索引值.但是他的增删速度慢,因为每次使用增删操作时,都需要创建新的数组来实现增删操作.LinkedArrayList的特点是,增删速度快,查找速度慢.因为LinkedArrayList底层采用的是链表结构,所以需要进行增删操作时,只需要改变连接的地址就能实现,不需要创建行的数组,但是查找时,每次都是重头开始查找,所以查找速度慢.Vactor的特点是,他线程安全,是单线程的,所以他的速度比起其他多线程的集合要慢.
          Set集合分为HashSet和LinkerHashSet. Set集合下的特点是,无索引(所以不能使用带所以的方法),不可重复.
           HashSet 是无序的,底层是使用哈希表来实现的,每次存储数据时会计算对应的哈希值,不同直接添加相同会进行equals比较,加快了存储的速度.查找速度也快.
           LinkerHashSet是有序的,他的存储和HashSet相同,只不过多了一个链表来保证元素的有序性及存储和取出的顺序相同.
Map集合下分为HashMap,和LinkedHashMap.他们都是以键值对的方式来存取元素的,都必须要保证Key的值是唯一的.如果具有相同的键,那么就等同与List中的Set方法,会覆盖具有相同值的Value值,他们都可以使用自定义的数据类型,但是如果数据类型当成键时,必须重写hashCode()方法和equals()方法来保证键值的唯一性.
           HashMap底层采用哈希表来实现,他是无序的及存储和取出的顺序不同;
           LinkedHashMap是HashMap的子类,他的底层是通过哈希表加上链表来实现的,他是有序的,及存储和取出的顺序相同.他底层加的链表是为了保证存储的顺序和取出的顺序一致.
回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?
答:一共有3中子类,分别为HashMap类,LinkedHashMap类,HashTable类
1.HashMap的特点为:因为底层是哈希表,查询数据特别快,是一个无序的集合,每次存储元素都是一个Key值+Value值,其中key和Value值都是引用数据类型,存储的key值不可重复,每一个key最多拥有一个value值对应,可以储存null值。
2.LinkedHashMap的特点:底层为哈希表+链表结构,用链表来记录储存的迭代顺序,是一个有序的集合,每次存储元素都是一个Key值+Value值,其中key和Value值都是引用数据类型,存储的key值不可重复,每一个key最多拥有一个value值对应可以储存null值
3.HashTable的特点是:底层是哈希表,因为是单线程,线程安全,但是运行效率低,不支持null值的存储(不管再key或者value都不能存储null)。


2.目前为止,我们所学的遍历map集合有几种方式?
答:遍历map集合的方式有两种。
第一种是通过键找值的方式,对于一个map集合,可以通过KeySet()方法转换为一个储存key值的set集合,再通过增强for循环/迭代器方式遍历set集合,遍历过程中对于每一个取出的key值在使用map.get()方法取出value值。
第二种是通过键值对关系,对于一个map集合,先使用EntrySet()方法获得一个储存map集合的key/value映射的set集合,然后通过增强for循环/迭代器遍历set集合,在遍历过程中,使用映射关系的特有方法getkry(),getvalue(),获得map集合的每一个key值和相对应的value值。

3.请用自己的语言描述你所了解的集合体系
答:
1.集合首先分为2种,一种为单列集合,其顶层接口是collection接口,其中的储存的元素都是单个单个存取的,另外一种是双列集合,其顶层接口是map接口,其中储存的元素都是一对一对的存取的。
2.单列集合种分为两种,一种为list集合,list集合的特点是:有序,储存的元素可重复,储存的元素有索引,方便快速的查询到元素。另外一种是set集合,set集合的特点是:储存的元素不可重复,元素没有索引。
3.list集合的子类集合较长看到的有3种,分别为Arraylist集合,LinkedList集合,Vector集合,他们都继承了List集合的特点。其中Arraylist集合底层是数组结构,因此他查询快,增删慢,LinkedList集合的底层结构是链表结构,所以他的特点是增删快,查询慢,而Vector集合是单线程,线程安全,但是运行效率低。
4.Set集合种有2种子类集合,他们分别是HashSet集合,LinkedHashSet集合,他们均继承了se集合的特点,HashSet集合的底层结构是哈希表,所以他存取数据是无序的,而LinkedHashset集合的底层是哈希表+链表+红黑树,所以他存取数据是有序的。
5.对于双列集合的特点主要为每个元素都是有2个值组成(key+value),其中key值唯一,每一个key值最多映射到一个value值。key和value都是引用数据类型,但两者的数据类型可以相同,也可以不相同。key和value值的关系靠key维持。
6.Map接口下有3种子类:分别为HashMap集合,LinkedHashMap集合,HashTable集合。
其中HashMap集合的底层是哈希表结构,所以查询速度特别快,但是因为是多线程,不安全。他是一个储存无序的集合。
LinkedHashMap集合的底层是哈希表+链表结构,查询速度也很快,但是是一个储存有序的集合。
HashTable集合底层也是一个哈希表,是单线程,线程安全。但是不支持null值的存储,不管key值或者value值都不能储存null值。

回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?
答:1.HashMap 特点:底层是哈希表结构,存取无序,不重复,无索引。
2.LinkedHashMap 继承HashMap特点:底层是哈希表 +链表结构,存取有序,不可重复,无索引。
3.HashTableA特点:底层是哈希表,是jdk1.0时的集合,key和value都不容许为null。

2.目前为止,我们所学的遍历map集合有几种方式?
答:两种
1.通过键找值的方式。Map集合通过keyset()方法,获得存储key的set集合,然后通过遍历set集合的方式,
通过get(key)的返回值是value获得value值。

2.通过键值对对象的方式。通过调用entrySet()方法,获得映射关系的键值对set集合。
然后通过getkey()方法和getvalue()方法分别获得key和value。

3.请用自己的语言描述你所了解的集合体系
答:目前来看,大的方面,集合分为两种集合。单列集合和双列集合。
1.单列集合的顶层接口是Collection集合,它又可以分为有序、有索引、可以储存重复元素的List接口,以及无索引、元素不重复的Set接口。
其中list接口的实现类有ArrayLis(底层数组结构,查询快,增删慢)、LinkedList(底层是双向链表,查询慢,增删慢)、Vector(底层数组,单线程安全性好、效率低)
其中Set接口的实现类有HashSet(底层是哈希表,查询非常快,无序)、LinkedHashSet(底层是哈希表+链表,有序)
2. 双列集合是Map集合,存储数据是一对的,分为key和value。要实现存储元素的唯一性,需要重新hashCode(方法)和equals(方法)。实现类有HashMap(底层哈希表,无序)LinkedHashMap(继承HashMap,底层是哈希表和链表结构,有序)、MapTable(底层是哈希表,最早的双链集合,单线程安全速度慢)
单链集合最常用ArrayList集合和HashSet集合,双链集合最常用HashMap集合
回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?
HashMap:底层是哈希表结构,元素的存取顺序不能保证一致,由于要保证键的唯一、不重复,需 要重写键的hashCode()方法、equals()方法。   
LinkedHashMap:HashMap的子类,底层是哈希表结构+链表结构,链表结构保证了存取顺序一致,通过哈希表结构可以保证的键的唯一、不重复,需要重写键的 hashCode()方法、equals()方法   

2.目前为止,我们所学的遍历map集合有几种方式?
1.键找值方式:
(1)通过keyset( )方法获取Map集合中所有的键,返还的是一个存着Map集合中所有的键的Set集合
(2)遍历Set集合,得到集合中的每一个元素,也就是键
(3)使用get(k key)方法,传入键,得到对应的值

2.键值对方式
(1)通过entrySet( )方法得到一个存储所有键值对对象的Set集合,键值对对象就是Entry将key对应的value一起组装起来,封装成对象
(2)遍历Set集合,得到每一个键值对对象
(3)使用getkey( )和getValue( ) ,得到键值对对象的键与值   

3.请用自己的语言描述你所了解的集合体系
目前学到的集合体系分为单列集合Collection接口和双列集合Map接口
Collection接口下有List子接口和Set子接口
List子接口特点:有序;可重复;有索引,包含索引
主要实现类分为1.ArrayList集合,数组结构,查询快,增删慢
                           2.LinkedList集合,哈希表加链表结构,增删快,查询慢
                           3.Vector集合,安全,效率低
Set子接口特点:不可重复;没有索引值
主要实现类HashSet集合,无序,要保证元素唯一性,需要重写hashCode 与 equals 方法;LinkedHashSet,是HashSet集合下的一个子类,是一个有序的集合。

Map接口特点:是一个双列集合,一个key,一个value;key和value的数据类型可重复;key和value一一对应;key内容不可重复,value内容可重复。
主要实现类HashMap,无序,要保证键唯一,必须复写对象的hashCode和equals方法
LinkedHashMap, 存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法
回复 使用道具 举报
林少伟
回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?
答:一共有两个子类
hashmap:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
LinkedHashMap:存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

2.目前为止,我们所学的遍历map集合有几种方式?
答:两种方式,通过调用entrySet()方法,获得映射关系的键值对set集合。然后通过getkey()方法和getvalue()方法分别获得key和value。
3.请用自己的语言描述你所了解的集合体系
答:集合体系分为单列集合Collection接口和双列集合Map接口
Collection接口下有List子接口和Set子接口
List子接口特点:有序;可重复;有索引,包含索引
主要实现类分为1.ArrayList集合,数组结构,查询快,增删慢
                           2.LinkedList集合,哈希表加链表结构,增删快,查询慢
                           3.Vector集合,安全,效率低
Set子接口特点:不可重复;没有索引值
主要实现类HashSet集合,无序,要保证元素唯一性,需要重写hashCode 与 equals 方法;LinkedHashSet,是HashSet集合下的一个子类,是一个有序的集合。

Map接口特点:是一个双列集合,一个key,一个value;key和value的数据类型可重复;key和value一一对应;key内容不可重复,value内容可重复。
主要实现类HashMap,无序,要保证键唯一,必须复写对象的hashCode和equals方法
LinkedHashMap, 存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法
回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?

两个。hashmap:不可重复,无索引值;hashtable:线程安全性高,效率低。

2.目前为止,我们所学的遍历map集合有几种方式?

两种。通过
3.请用自己的语言描述你所了解的集合体系

集合总体分为双列集合和单列集合。
单列集合又分为:list;set.
list的子类:arraylist,linkedlist,vector。
set的子类:hashset。hashset的子类linkedhashset。
双列集合的子类:hashmap。hashmap的子类linkedhashmap。
回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?
        有3个子类:HashMa;LikedHashMap;Hash table;
       HashMap是双列集合,并且无序,底层原理是有由哈希表(数组+单项链条/红黑树)存储元素,多线程所以查询速度非常快,但确是相对不安全的集合,可以储存null键和null值,并且K键是唯一的不可重复,V值可以重复。
       LikedHashMap是HashMap的子类,有一点不同的是LikedHashMap是有序的集合,底层多了个链条来记录元素顺序。其他特点跟Hash Map一样。
       Hashtable是一个相对比较古老的Map的子类,也是双列集合,无序,是一个单线程效率低,但却又是更加安全的集合,无法存储null键和null值,目前已基本被替代,但他有一个子类目前还仍在使用,今天还未学习。

2.目前为止,我们所学的遍历map集合有几种方式?
       目前有2种方法,第1种方式keySet,通过键找值方法,使用键值获取对应的V值;第2种方式entrySet,通过存储键值对的映射关系,将一对对的元素储存到集合中,这个方法更多面向键值为自定义的对象类型。

3.请用自己的语言描述你所了解的集合体系
集合体系主要分为2大类:Collection 单列集合 和 Map 双列集合。
Collection下有两大类型的集合:List集合:有序,有索引,元素可重复;Set集合:无索引,元素不可重复;
      List类:ArrayList集合,有索引查询速度快,增删慢因为底层由数组组成,增删时都要复制到新数组;
                 LinkedList集合,查询慢因为底层是链表结构,需要从头逐一获取元素,增删快因为只需要记住下一个元素的地址,每次增删都在此地址值;
                 Vector集合:古老的集合,线程安全,但效率低。
      Set类:HashSet集合:无序,底层由哈希表存储元素,存储元素是通过比较哈希值,哈希值不同直接添加,哈希值相同,再比较属性,不同才添加,所以必须重写HashCode和eglus方法;
             LinkedHashSet集合:是HashSet的子类,有序,因为底层是由哈希表+链条的结构记录元素,链条记录了顺序,保证了有序,其他和Hashset相同;

Map集合有3种类型,共性特点是:双列集合,一个元素包含两个值:Key键,Value值,K和V数据类型可以不同或相同,K键是唯一的不可重复,V值可以重复,两者成对共存;
          HashMap集合:底层由哈希表+单项链条(或红黑树)结构存储元素,查询快,无序,多线程,可以存储Null键和Null值,因为无序所以无法使用迭代器进行遍历,需要使用KeySet或EntrySet进行便利。
         LinkedHashMap集合:是HashMap的子类,底层由哈希表+链表组成,链表用来记录顺序,所以它是有序集合,其他特点跟HashMap一样;
          Hashtable集合:是相对古来的集合,继承Map接口,一样也是双列集合,无序,是一个线程安全的集合,但效率比较低速度慢,不能储存Null键和Null值。但它有一个子类现在还很活跃。

回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?

两个子类:HashMap和LinkedHashMap

HashMap:底层是哈希表,是一个无序集合,查询速速快里面存储键值对,且只能存储引用类型数据,其中,键不能重复,value值可以重复。

LinkedHashMap:是HashMap的一个子类,底层比HashMap多了个链表结构,是一个有序集合,同HashMapkey键值不可重复。

2.目前为止,我们所学的遍历map集合有几种方式?

两种。通过keySet方法获得一个键值的set集合,再通过增强for和迭代器的方式进行遍历,通过key键找到对应的value值。

另外一种是通过键值对关系,使用entrySet方法将键值对对象存储到set集合中,然后同样通过增强for和迭代器的方式进行遍历,通过提供的getKey和getValue方法获取集合中对应的key值和value值。

3.请用自己的语言描述你所了解的集合体系

1.集合分为单列集合(顶层接口collection)和双列集合(顶层接口Map),单列集合的元素是单独存取的,双列集合的元素是成对存取的。

2.单列集合又分为List集合和Set集合,其中List和Set也是两个接口。List集合是一个有序的,有索引值的,可重复的。Set集合是无索引的,不可存储重复元素的。

3.List集合又有3个实现类,分别是:
ArrayList:底层是数组结构,所以查询快,增删慢。
LinkdeList:底层是链表结构,同ArrayList相反,查询慢,增删快。
Vector:线程安全。

4.Set集合有:
HashSet:底层是哈希表,该类允许使用null元素,是一个无序的集合,具有良好的存取和查找性能。
LinkedHash:是HashSet的子类,但它是有序的,底层是哈希表和链表加红黑树。

5.Map集合有三个子类:
HashMap:底层是哈希表+链表,查询速度快。存储的是无序的。
LinkedHashMap:是HashMap的子类,底层是哈希表+链表,查询速度跨,是有序的。
回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?
1.HashMap 特点:底层是哈希表结构,存取无序,不重复,无索引,线程不安全的集合,多线程,速度快
2.LinkedHashMap继承HashMap特点:底层是哈希表 +链表结构,存取有序,不可重复,无索引
3.HashTable特点:底层是哈希表,是jdk1.0时的集合,线程安全的集合,单线程,速度慢,key和value都不容许为null

2.目前为止,我们所学的遍历map集合有几种方式?
1.键找值方式:
(1)通过keyset( )方法获取Map集合中所有的键,返还的是一个存着Map集合中所有的键的Set集合
(2)遍历Set集合,得到集合中的每一个元素,也就是键
(3)使用get(k key)方法,传入键,得到对应的值
2.键值对方式:
(1)通过entrySet( )方法得到一个存储所有键值对对象的Set集合,键值对对象就是Entry将key对应的value一起组装起来,封装成对象
(2)遍历Set集合,得到每一个键值对对象
(3)使用getkey( )和getValue( ) ,得到键值对对象的键与值

3.请用自己的语言描述你所了解的集合体系
单列集合Collection接口下有List接口和Set接口,List接口下有ArrayList,LinkedList,Vector类
Set接口下有HashSet,LinkedHashSet类
双列集合Map接口下有HashMap,LinkedHashMap,Hashtable类
List接口:元素有序,可重复,有索引
ArrayList :底层是数组,因此元素增删慢,查找快
LinkedList :底层的结构是链表结构,因此元素查找慢,增删快。
Set接口:没有索引,不可重复
HashSet:底层是哈希表结构(查询速度快),是无序的集合,不能使用for循环遍历
LinkedHashSet:是哈希表+链表结构,保证元素有序
Map:双列集合,键值一一对应,键不可重复
HashMap :无序,存储的元素不可重复
LinkedHashMap :有序,存储的元素不可重复
Hashtable:底层是哈希表,是jdk1.0时的集合,线程安全的集合,单线程,速度慢,key和value都不容许为null




回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?有HashMap和LInkedHashMap两个接口。
HashMap:无序,不可重复
LInkedHashMap :有序 不可重复

2.目前为止,我们所学的遍历map集合有几种方式?
键找值:通过keySet方法把键存储在keySet集合中,遍历集合,再通过键找到值,打印输出。
键值对:通过entrySet方法,得到entrySet的集合,遍历后,通过entryset的对象的getkey和getValue方法去得到key和Value,放进map集合中,打印输出。

3.请用自己的语言描述你所了解的集合体系
顶层分为单列和双列。
单列顶层是collection,往下有list和set两个接口;list集合的特点是有序、有索引、可重复,下面有ArrayList、LinkedList、Vector;set集合特点是:无序、不可重复、无索引,set下面有HashSet,LinkedHashSet。
双列顶层是Map,往下是HashMap,HashMap的一个子类是LInkedHashMap。Map双列集合和set几乎完全一样,关键不同在于双列集合自身的概念——键值对。map的特点是不可重复,无索引值。
回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?
HashMap<K,V>
存储数据采用哈希表结构,元素的存取顺序不一致,想要保住键的唯一性,必须重写hashCode(),equals()方法
LinkedHashMap<K,V>
存储数据采用哈希表结构+链表结构 通过链表结构来保证存取顺序一致,通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()法。
2.
目前为止,我们所学的遍历map集合有几种方式?
三种
普通for循环
迭代器
增强for循环
3.
请用自己的语言描述你所了解的集合体系
Collection
list                                                         set

有序的集合                                          无索引集合
可重复性                                              不可重复
有索引
ArrayList                                               hashset   
查询快.增删慢                                无序
查询快:根据索引去查找元素               重写hashCodeequals方法保证不重复
增删慢:每次增删时要创建新的数组
linkedlist                                                linkedhashset
查询慢,增删快                                      有序
查询慢:每次查询从头开始查找                 重写hashCodeequals方法保证不重复
增删快,只需要记住下一个元素的地址,每次在地址值中增删
Vector
线程安全
Map
HashMap           
存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
linkedHashMap
HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

回复 使用道具 举报
王宏 中级黑马 2018-12-25 08:55:10
28#
1.Map接口下有几个子类,各自有什么特点?
HashMap 是无序,存储的元素不可重复
LinkedHashMap 是有序,存储的元素不可重复

2.目前为止,我们所学的遍历map集合有几种方式?
有两种方式一种是根据根据键找值方式遍历(用keySet方法获取所有key键的Set集合,再用迭代器遍历Set集合用get(key)方法获取value值)。另一种是用键值对方式遍历,(用entrySet方法获取所有的entry对象的Set集合,再用迭代器遍历Set集合用entry对象.getKey()方法获取key值和entry对象.getValue()方法获取value值)。

3.请用自己的语言描述你所了解的集合体系
1.list接口的特点是有索引,可重复,有序,有Arraylist(增删慢,查询快)、linkedlist(查询快,增删慢)、vector(单线程,安全,慢)三个子接口2.hashset接口特点无序,无索引,不可重复,有hashset接口(无序,无索引不可重复)和linkedset(存储的顺序,无索引,不可重复)俩哥常用接口3.map也是一个接口,有linkedhashmap(存储的顺序,键值唯一,自定义类需要重写equals方法和hashcode方法)和hashmap(无序,键值唯一,自定义类需要重写equals方法和hashcode方法)以及hashtable(安全,慢,键值和键不能为null)三个常用子接口4.Compare比较器和Comparator比较器相比,Comparator用的更多,因为Compare是在类重写对类所对应的对象都强制自然排序,耦合性太高,Comparator比较器解耦程度比较好,在方法里可以在一定程度上创建自定义规则排序,灵活性更高
回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?
HashMap:无序存储,key和value可以存null
LinkedHashMap:多一条链表记录顺序,有序,key和value可以null
HashTable:存储的两个对象不能为null
2.目前为止,我们所学的遍历map集合有几种方式?
两种,可以通过KeySet:对Set集合用此方法,获得Key的set集合,再根据这个set集合遍历,用get(Key)方法间接获取value
EntrySet遍历:用此方法获取键值对的set集合,再根据键值对的get方法获取Key和Value
3.请用自己的语言描述你所了解的集合体系
单列集合:Collection(没有索引)包含List(有序,有索引,元素可重复,可以普通for循环)和Set(无序,无索引,元素不重复,不能普通for循环)
双列集合:Map(Key,Value)包含HashMap(无序)和LinkedHashMap(有序),可以增强for循环和迭代器循环,两种遍历方式
回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?
HashMap:存储数据采用哈希表结构,无序
LinkdeHashMap:存储数据采用哈希表结构和链式结构,有序
2.目前为止,我们所学的遍历map集合有几种方式?
一种遍历键找值方式,一种遍历键值对方式
3.请用自己的语言描述你所了解的集合体系
集合只能存放引用类型,其存放的是多个对象的引用,可以存放不同类型。
Collection接口下的Set接口(无序),List接口(有序)和Map接口。
Set下有HashSet,LinkedHashSet
HashSet底层数据结构是哈希表,无序,不可重复
LinkedHashSet底层数据结构式链表和哈希表,有序,不可重复
List下有ArrayList,LinkedList
ArrayList底层数据结构是数组,查询块,增删慢
LinkdeList底层数据结构是链表,查询慢,增删快
Map下有LinkedHashMap,HashMap
HashMap:存储数据采用哈希表结构,无序
LinkdeHashMap:存储数据采用哈希表结构和链式结构,有序

回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?HashMap:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
LinkedHashMap:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
3.HashTable:底层是哈希表,因为是单线程,线程安全,但是运行效率低,已经被取代。不支持null值的存储(不管再key或者value都不能存储null)。  

2.目前为止,我们所学的遍历map集合有几种方式?
两种方式
键找值方式:即通过元素中的键,获取键所对应的值
键值对方式:即通过集合中每个键值对(Entry)对象,获取键值对(Entry)对象中的键与值。
  
3.请用自己的语言描述你所了解的集合体系

集合分为单列集合Collection集合和双列集合Map集合。
Collection集合下又有List集合和Set集合。
      List接口特点:1. 它是一个元素存取有序的集合。2. 它是一个带有索引的集合。3. 集合中可以有重复的元素。
              list集合底下又有 LinkedList 集合和ArrayList 集合
                    LinkedList 集合数据存储的结构是链表结构。方便元素添加、删除的集合。
                    ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快。

     Set接口的特点:1.不允许存储重复的元素。 2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历。
             set集合下又有HashSet集合和LinkedHashSet集合。
                   HashSet集合特点: 1.不允许存储重复的元素。2.没有索引,没有带索引的方法,也不能使用普通的for循环遍历。3.是一个无序的集合,存储元素和取出元素的顺序有                                                    可能不 一致。 4.底层是一个哈希表结构(查询的速度非常的快)。
                   LinkedHashSet集合特点: 底层是一个哈希表(数组+链表/红黑树)+链表:多了一条链表(记录元素的存储顺序),保证元素有序

Map集合下又有HashMap集合和LinkedHashMap集合
               HashMap集合:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
               LinkedHashMap集合:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表                                                  结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。  

回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?

HashMap:无序的;存储数据采用的哈希表结构,不能保证元素存取的顺序一致。要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

LinkdHashMap:有序的;是HashMap的子类,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;和hashmap一样必须重写键的hashCode()方法、equals()方法。

3.HashTable:存储数据采用的哈希表结构,因为是单线程,线程安全,运行效率低,不支持null值的存储。

2.目前为止,我们所学的遍历map集合有几种方式?

两种。一种是通过键去找值,通过keyset()将map集合中的key值存储到一个set集合中,然后通过遍历set集合的键去找对应的值。

一种是通过键值对的方式去遍历集合。用entrySet()将map集合的键值对都存储到一个set集合中 ,然后遍历set集合,再通过entry.getkey()和entry.getvalue()去获取对应的键和值。

3.请用自己的语言描述你所了解的集合体系

目前所学两大集合接口体系:collection集合接口和map集合接口。

collection接口:包含List接口和set接口;

list的特点是有序的,有索引值,元素可重复。主要实现类Arraylist(有序的,查询快,增删慢),Linkedlist(有序的,查询慢,增删快),

set的特点是无索引值,元素不可重复。主要实现类Hashset(无序的),LinkedHashset(有序的,)

map接口:集合特点是无索引,元素不可重复,因底层的数据结构为哈希表,所以查找速度快。 主要实现类hashmap(无序的)和其子类Linkdhashmap(有序的);


回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?
答:1.有多个子类,但我们经常用到的约3个左右  HashMap,Hashtable,LinkedHashMap,
       2.在Map接口下的集合都具有双列的特点,以键值对的方式存在,
       3.其中HashMap的特点是  无索引,无序,键不可重复,可以存储null对象(但是存储自定义类型的时候必须重写Hashcode和equlas方法否则键也会重复)他的底层不            可重复的原理是给元素计算出一段哈希值,当作为键添加的时候会进行比较,若是存在相同的哈希值则会继续比较内容,若内容也相同则会返回false添加不进去
      4.Hashtable:此集合的特点是,键不可重复,无索引,双列集合,底层是基于哈希表实现的有key,和value值,任何非null对象都可以作为键或者值
      5.LinkedHashMap:此集合的特点是,键不可重复,无索引,双列集合,有序,底层是用的哈希表和一个双重链表形式组成,因为LinkedHashMap是HashMap的子类           所以HashMap有的缺点 LinkedHashMap也都具备,而LinkedHashMap具有的特点HashMap却不具备,map接口下的
      6.遍历方式:map集合下的所有集合都不能用普通for遍历,因为没有索引,可以使用增强for和迭代器 遍历
2.目前为止,我们所学的遍历map集合有几种方式?
答:2.1遍历方式:map集合下的所有集合都不能用普通for遍历,因为没有索引,
         entrySet一次性获取键值对的方式获取到数据,然后使用增强for遍历 entrySet,
          keySet 一次性获取到所有的键,然后用 get方法把key传进去根据键找值
3.请用自己的语言描述你所了解的集合体系
                                                            1.单列集合用于存储单个数据的顶层接口 collection
                                                                                                    |
  List(有序,有索引,可重复,)       --------------------------------------------------------------------------    Set (有些有序有些无序,无索引不可重复)
                          |                                                                                                                                                                                  |
          -----------------------------------------------------                                                                                 -------------------------------------------
                         |                                                                                                                                                                                 |                                                            ArrayList(有序,有索引,可重复,查找块,增删慢)    LinkedlList (有序,无索引,可重复,查找慢,增删快)                  HachSet(无序,查找快)
                                                                                                                                                                                                           |
                                                                                                                                                                                                     LinkedSet(有序   )
                                                               2.双列集合用于存储一对数据顶层接口Map
                                                                                                |
                                                        ----------------------------------------------------------
                                                          |                                                                    |
                                                    HachMap(无序,不可重复,无索引,存储自定义类型需要重写方法能去重 )           
                                                          |
                                                     LinkedlMap (有序,因为底层有一个双重链表结构,存储自定义类型需要重写方法能去重)  

3.集合遍历方式 有索引的遍历手段可以用 普通for遍历 迭代器遍历 增强for遍历,无索引的不能用普通for遍历    迭代器可以遍历有索引和没有索引的,在集合体系里面通用                                                                                                                                                        



回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?
常用的有HashMap,Hashtable,LinkedHashMap;
HashMap特点:存取的顺序可能不一样(无序),键不可重复,不能被迭代器遍历;
Hashtable:速度慢,不能存储null值,null键,底层使用的是哈希表,是一个线程安全的单线程集合;
LinkedHashMap:有序,因为底层它的底层多了一层链表来记录它存储时的顺序,键不可重复;
2.目前为止,我们所学的遍历map集合有几种方式?
两种,一种‘键找值’(KeySey()方法)遍历,一种‘键值对’(EntrySet()方法)遍历
3.请用自己的语言描述你所了解的集合体系?
集合就是一个容器,只能用来存储引用数据类型;
Map为双列集合的顶层接口,它常用的子接口有HashMap,Hashtable,LinkedHashMap;
Collections为单列集合的顶层接口,它的子接口有List接口和Set接口,是一个无序的集合;

回复 使用道具 举报
1:两个 HashMap:保证成对元素唯一,并且查询速度很快 但元素的存取顺序不能保证一致。
LinkedHashMap:保证成对元素唯一,并且查询速度很快 元素的存取顺序一致。
2:2种。KeySet EntrySet
3:集合体系分两种。一种叫单列,另外一种叫双列。单列顶层是Collection 下面分为List,Set。List下面还有3个实现类ArrayList LinkedList vector。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马