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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

4 个回复

倒序浏览
1.Bindings, ConcurrentMap<K,V>, ConcurrentNavigableMap<K,V>, LogicalMessageContext, MessageContext, NavigableMap<K,V>, SOAPMessageContext, SortedMap<K,V>
2.foreach,迭代器,keySet(),entrySet()
3.单列或多列  有或无序 有或无索引 能或不能重复 储存形式   
回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?
(1)常见的子类有HashMap 、 LinkedHashMap 、TreeMap  、Hashtable
(2)特点
        1)HashMap:底层采用哈希表结构,需要重写hashCode和equals方法,保证存储元素的唯一性,元素存储不一定有序
        2)LinkedHashMap:是HashMap的子类,底层加入链表结构,保证存取顺序一致,其他和HashMap类似
        3)TreeMap:底层采用二叉树数据结构,存储元素需要实现内部比较器,或则在创建TreeSet对象的时候传入一个外部比较器。元素按照比较器的规则进行排序存储
        8)Hashtable:底层也是hash表结构,和HashMap的主要区别是它是线程安全性,效率低,所以基本被HashMap代替,但是它有一个Properties子类,可以进行IO流相关操作,比较常使用
2.目前为止,我们所学的遍历map集合有几种方式?
(1)主要有两种
      1)调用map的keyset方法获取键值Set集合,遍历set集合获取map的值
      2)调用map的entryset方法获取键值对对象的set集合,通过遍历set集合获取map的键和值
3.请用自己的语言描述你所了解的集合体系
(1)集合包含两大类,一个是单列集合(Collection),一个是双列集合(Map)
(2)单列集合存储单个元素,主要分为List和Set两大类,List存储有序,可以存储重复元素,Set集合存储不一定有序(除了LinkedHashSet)不能存储重复元素
(3)Map集合存储是键值对,其中键不能重复,值可以重复,一般存储具有相关联系的一对数据,常见的实现类有HashMap 、 LinkedHashMap 、TreeMap  、Hashtable
      





回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?
        今天学了
        HashMap集合:
        1.存储数据采用哈希表结构(JDK1.8后,哈希表:数组+链表+红黑树(1.8之前没有)),存取顺序是无序的,
        2.用键值对作为元素,一一对应,一个键(key)对应一个值(value),键是唯一的,不可以重复,值可以重复.
        为了保证键是唯一的,需要键重写hashCode方法和equals方法
        LinkedHashMap集合:
        存储数据采用哈希表结构+链表结构,链表结构能保证存取元素的顺序一致,
        哈希表也是为了保证键是唯一的,需要键重写hashCode方法和equals方法
2.目前为止,我们所学的遍历map集合有几种方式?
        可以用迭代器和增强for
                1.keySet方法
                将map集合的键转换为set集合(map.keySet()),(while需要获取一个迭代器[set]获取,next()方法获取key值)
                对Set集合进行遍历,在通过map 的 get(K key) 方法获取到 value,同时打印key,value
                2.Entry键值对对象
                嵌套类也称为内部类
                Map接口中的一个内部接口Entry
                作用: 当Map集合一创建,那么就会在集合中创建一个Entry对象,
                          用来记录键与值(赋值对对象,键与值的映射关系)--> 结婚证
                          可以用来遍历map双列集合
                Set<Map.Entry<K,V>> 集合名 = map.entrySet();
                通过集合名遍历
                 for (Entry<K, V> entry : entrySet) {}
                 entry获取getKey(),getValue()方法获取键值对
3.请用自己的语言描述你所了解的集合体系
        1.有单列集合(List,Set)和双列集合(Map);
        2.单列集合(顶层父接口(Collection集合)):
        (1)List是有序的(存取一致),允许元素重复,带索引值的,并且能够用普通for进行遍历.
         - List集合的子类: Vector集合、ArrayList集合、linkedList集合
        (2)Set是无序的(存取不一致),不允许重复(需要保证元素唯一性,重写了hashCode方法和equals方法),没有索引,也就不能使用普通for进行遍历.
         - Set集合的子类: TreeSet集合、HashSet集合(被LinkedHashSet继承(此集合是有序的!))
        注意: Set集合下的 LinkedHashSet集合是有序的
        3.双列集合:
        (1)Map,存储的是键值对,一一对应,一个键(key)对应一个值(value)值,键必须是唯一的,元素可以重复.
        (2)注意: 当键使用自定义数据类型时,为了保证键的唯一需要自定义类型的类重写hashCode方法和equals方法.
        (2)实现类有:HashMap 、 LinkedHashMap ...
回复 使用道具 举报
1.Map接口下有几个子类,各自有什么特点?
答:Map常用的子类主要有HashMap集合、LinkedHashMap集合。
HashMap:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一,不重复要重写键的hashCode()方法,equals()方法。
LinkedHashMap:该类存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
2.目前为止,我们所学的遍历map集合有几种方式?
答:(1)键找值方式:获取Map中所有的键,由于键是唯一的,所以返回一个Set集合存储所有的键。所用方法:keySet。
(2)通过键值对对象获取对应键和对应值的方法。所用方法:public K getKey(); public V  getvalue()。
3.请用自己的语言描述你所了解的集合体系。
答:(1)Collection作为单列集合,它常用的子类有java.util.List集合和java.util.Set集合。在List集合中允许出现重复的元素,所有的元素都是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。
<1>List作为Collection集合的子接口,不但继承了Collection接口中的全部方法,而且还增加了一些根据元素索引来操作集合的特有方法,如下:
Public void add(int index,E element)
Public E get(int index)
Public E remove(int index)
Public E set(int index,E element)
List的子类主要有ArrayList集合和LinkedList集合。
①ArrayList集合的数据存储结构是数组结构,元素增删慢,查找快。
②LinkedList集合的数据存储结构是链表结构,元素增删快,查找慢。
实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。如下:
Public void addFirst(E e);
Public void addLast(E e);
Public E getFirst();
Public E getLast();
Public E removeFirst();
Public E removeLast();
Public E pop();
Public E void push(E e);
Public boolean isEmpty;
<2>Java.util.Set接口和java.util.List接口一样,同样继承自Collection接口中的方法基本一致,只是比Collection接口更加严格了。该接口的元素无序,并且都会以某种规则保证存入的元素不出现重复。
Set的子类主要有java.util.HashSet、java.util.LinkedHashSet这两个集合。Set集合取出元素的方式可以采用:迭代器、增强for。
①HashSet是根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找功能。保证元素唯一性的方式依赖于hashCode与equals方法。
②LinkedHashSet集合的数据存储结构是链表和哈希表组合的一个数据存储结构。
(2).Map作为双列集合,常用的有HashMap集合和LinkedHashMap集合。Map的集合不能包含重复的键,值可以重复,每个键只能对应一个值。
①HashMap:存储数据采用的是哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一,不重复,要重写HashCode(),equals()方法。
②LinkedHashMap:HashMap下有个子类LinkedHashMap,存储数据采用哈希表结构加链表结构。通过链表结构保证元素的存取顺序一致;通过哈希表结构可以保证键的唯一、不重复,需要重写键的HashCode(),equals()方法。
Map接口定义了很多方法,常用的如下:
Public V put(K key,V value)
Public V remove(Object key)
Public V get(Object key)
Public set<K> keyset
Public Set<Map.Entry<K,V>> entrySet()
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马