Java总结 DAY16 0820 Vimcelia

回顾:

1、泛型主要约束类、接口、方法
常规的一些泛型符号:W,T,E,K,V(可以任意使用)
2、泛型的好处:
避免强制类型转型, 把运行出错的情况提前到编译错误
泛型的坏处:
只能存同样的数据类型

给类定义泛型的语法:   
	访问修饰符    class  类名<泛型>{
	}

3、静态方法不能使用类的泛型的申明

给接口定义泛型: 
	访问修饰符    interface  类名<泛型>{
	}

4、实现接口的泛型的两种情况:

  • 实现类确定泛型 (Scannner)
  • 不确定的泛型( List )

5、泛型的通配符 ? :

  • <? extends E> 问号可以是泛型E 的子类, 包含E
  • <? super E> 问号可以E的父类 包含E

6、泛型没有继承的概念

7、set 集合的特点: 无序,没有索引,不能够重复

  • 实现类: HashSet 无序,没有索引,不能够重复, 是以hash表结构进行存(查询的速度快)

8、如何避免存同样的数据:

  • 比较hashCode 与equals( ) 是否相等 ( 实际上是map来进行存的 )

Map

是一个接口,是双列集合的顶级
(Collection 是单列集合的顶级 )

  1. Map:是以键值对的形式来进行存储(Key,Values);

     语法:
      Map<Integer,String> map=new HashMap<>();       
    
  2. map 里的键(Key)都是唯一的,不能够重复, (Values)是可以重复,每一个键只能对应一个值(一 一对应,也就是映射的关系)
    在这里插入图片描述

  3. Map 的具体实现类有

  • HashMap(重点)
  • TreeMap
  • Hashtable(少用)
  1. Map.Entry<K,V> :Map里面有一个内部接口的名字叫Entry
Map 常规的一些方法:

添加的方法

 V put(K key,V value)  
 //通过键值对来进行添加

移除的方法:

V remove(Object key)  
//通过键来删除键值对 (没有根据索引来移除)
判断类型的方法:
boolean containsKey(Object key) 

判断这个键是否存在

boolean containsValue(Object value) 

判断这个值是否存在

boolean isEmpty()

是否存在元素

获取性的方法:
void clear( ) 

清除所有的元素

V get(Object key)  

通过键来获取值

int size( ) 

获取集合的长度

Collection<V> values() 

获取所有的values()

Set<K> keySet( )  

获取map中所有的键 ,返回值是一个Set

修改类方法

根据键来修改值,键必须存在

V put(K key,V value)
Collection 与 Map

Collection:

  1. 单列集合(存的数据都是独立)
  2. 单列集合的数据结构都是都是具体的数据
  3. 单列中的set集合不能出现重复的数据

Map:

  1. 双列集合 (以键值对进行存储)
  2. 双列集合的数据结构都是正对与键
  3. 双列集合是键不能出现重复的数据
双列集合的遍历方式:
  1. 获取到所有的key,来得到具体的值
  2. 把每一组数据当成是一个整体来进行遍历

Map集合里嵌套map 集合来进行遍历: 规律:从外层往内层剥皮

HashMap :

父接口是Map, 它的存储方式也是以hash表的结构来进行存储(无序)

  • HashMap 与HashSet : 都是以hash表结构来进行存储(查询速度快)

  • HashSet 相当于 map 里没有values 那一部分,只用去关注键的那一部分(hash值 与equals()来判断键是否重复)

  • HashMap: 只关注键,不关注值(任意的值都可以,还可以重复 )

  • HashMap 的一个子类是LinkedHashMap: 也是数组加上双重链表来进行存储, 有序

Hashtable 与HashMap 的区别
  1. 版本不一样: Hashtable 1.0 HashMap 1.2
  2. Hashtable 不符合命名规范 HashMap 是符合
  3. Hashtable 线程安全,效率地 HashMap 线程不安全 ,效率高
  4. HashMap 已经把Hashtable替换掉

疑问

Map集合在内存的分配上是怎样的?是键值在栈,Valus值在堆吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值