mysql5资源共享

 找回密码
 立即注册
查看: 29|回复: 1

[MS-SQL Server] 【基础】Set/Queue/Map#接口

[复制链接]

4

主题

4

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2019-7-18 19:49:50 | 显示全部楼层 |阅读模式
本章目标:
1.Set接口
2.Queue接口
3.Map接口

===================================================

1.Set接口
1.1特点:无序(以哈希表顺序存放);元素不能重复;增删快;元素可以是null,但只能放一个。
        什么是无序?存入与取出的顺序不一致。
        元素不能重复?实体类需要重写equals()和hashCode()方法。(重点掌握)

1.2遍历方式:
        foreach
        Iterator迭代器
1.3主要实现类:
        HashSet
        TreeSet
        LinkedHashSet

2.HashSet
2.1特点:以哈希表的形式存放元素(底层是HashMap);线程不同步;增删快;可以存null,但只能放一个。
2.2如何确认重复元素?
        当hashcode值相同,且equals()返回值为true时,HashSet就认为这两个元素是相同的。
        所以在实体类中需要重写hashcode()及equals()。
        示例:在User实体类中重写hashcode()\equals()
        @Override
        publicbooleanequals(Objectobj){
                if(this==obj)returntrue;
                if(!(objinstanceofUser))returnfalse;
                if(!this.username.equals(obj.getUserName()))returnfalse;
                returnthis.age==obj.getAge();
        }

        @Override
        publicinthashCode(){
        intresult=name.hashCode();
        result=31*result+age.hashCode();
        returnresult;
        }

3.TreeSet
3.1特点:根据某种规则对元素进行排序;底层是TreeMap(红黑树)。
3.2TreeSet与HashSet的区别?(面试题)
        (1)TreeSet判断两个对象是否相同的方法是Comparable接口中的compareTo()方法;而而HashSet用的则是继承自Object类的equals()方法。
        (2)TreeSet有自动排序的功能,HashSet没有。

4.LinkedHashSet
4.1特点:FIFO先进先出;迭代的顺序就是添加的顺序。


5.Queue接口(队列)
5.1特点:FIFO先进先出;主要用于存储数据,而不是处理数据。
5.2主要实现类:
        LinkedList
5.3常用方法:
        add()|offer()        在集合最后一位追加元素,禁止添加null(LinkedList没有禁止)
        remove()|poll()        删除第一个元素
        element()|peek()        获取第一个元素


4.Map接口
4.1特点:无序;以Key/Value对的形式存储数据;键不能重复,值可以重复;Key不能为null,value可以为null,且可以重复。
4.2遍历方式:
        Iterator
        将Map的Key转成Set,通过Foreach遍历

4.3主要实现类:
        HashMap
        Hashtable
        TreeMap
        LinkedHashMap

Map接口常用方法:
        put()                添加
        get()                获取key对应的Value
        remove()                移除key对应的value
        clear()                移除集合中所有元素
        containsKey()        集合中是否包含key
        containsValue()        集合中是否包含value
        keySet()                显示所有key       
        values()                显示所有value
        entrySet()        返回所有key的Set集合

5.HashMap
5.1特点:根据Key的哈希码值存储数据;线程不同步;查询快;最多允许一个key为null,多个value为null。

6.Hashtable
6.1特点:与HashMap类似,但不允许Key或Value为null;线程同步,写入较慢。

7.TreeMap
7.1特点:对Key进行排序(默认升序),也可指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。

8.LinkedHashMap
8.1特点:保存记录的插入顺序;在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的;在遍历的时候会比HashMap慢。








回复

使用道具 举报

37

主题

1740

帖子

3557

积分

论坛元老

Rank: 8Rank: 8

积分
3557
发表于 2019-7-18 21:29:16 | 显示全部楼层
建议发到博客,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|mysql5.com Inc. ( 闽ICP备17002856号-1 )

GMT+8, 2019-10-23 00:09 , Processed in 0.041865 second(s), 18 queries .

Powered by MySQL5.com X3.4

© 2003-2019 MySQL5.com.

快速回复 返回顶部 返回列表