java基础视频需要记忆的部分备忘 - 集合部分2

泛型

好处:
1.将运行时期出现的问题ClassCastException转移到了编译时期,方便于程序员解决问题。
2.避免了强制类型转换问题。
弊端:
1.不可以预先使用对象的特有方法。

比较器和比较接口同样实现了泛型。

泛型定义在类上: class ClassName<T>{//something}
泛型定义在方法上:public <T> void funcName(){//something}
泛型定义在静态方法上:public static <T> void funcName(){//something}
泛型定义在接口上:interface Inter<T>{//something}在实现时,既可以指定实现数据类型,也可以定义泛型类提供更多数据类型使用。
占位符: ?  用来指定不确定的类型部分。
public void funcName(List<?> li){
 Interator<?> it = li.iterator();
 while(it.hasNext()){
  it.next();
 }
}

public <T> void funcName(List<T> li){
 Interator<T> it = li.iterator();
 while(it.hasNext()){
  it.next();
 }
}
两者几乎没有区别,但T是可以使用并定义类型的,而?不可以。

泛型限定:
<? extends E>可以接受E类型或E的子类型。上限。
<? super E>可以接受E类型和E的父类型。下限。

局限性在于只能调用对象的共性能容。

Map集合
该集合存储键值对。数据成对且唯一。
遍历Map集合的方式:
1.Set<k> keySet:将Map中所有的键存入到Set集合。因为Set具备迭代器。所以可以通过迭代方式取出所有的键,再根据get方法获取每一个键对应的值。
Set<T> keySet = map.keySet();//先获取map集合所有键的Set集合,keySet()
Iterator<T> it = keySet.iterator();
while(it.hasNext()){
 T key = it.next();
 E value = map.get(key);
}
2.Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中。而这个关系的数据类型就是:Map.Entry
Set<Map.Entry<V,K>> entrySet = map.entrySet();//将Map集合中的映射关系取出,并存入到Set集合中。
Iterator<Map.Entry<V,K>> it = entrySet.iterator();
while(it.hasNext()){
 Map.Entry<V,K> me = it.next();
 K key = me.getKey();
 V value = me.getValue();
}



Map - Hashtable
 底层是哈希表数据结构,不可以存入null键、null值。该集合是线程同步的。
Map - HashMap
 底层是哈希表数据结构,可以存入null键、null值。该集合是线程不同步的。
Map - TreeMap
 底层是二叉树数据结构,可以用给Map集合中的键进行排序。线程不同步。

其实Set底层就是使用了Map集合。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值