Set接口/Queue接口/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
public boolean equals(Object obj) {
if(thisobj) return true;
if(!(obj instanceof User)) return false;
if(!this.username.equals(obj.getUserName())) return false;
return this.age
obj.getAge();
}

          @Override
          public int hashCode() {
                int result = name.hashCode();
                result = 31 * result + age.hashCode();
                return result;
          }

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

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

  2. 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()		移除集合中所有元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值