第十五天-JavaAPI(集合类、泛型、Map)

记住:排序时,当主要条件相同时,一定要判断一下次要条件。


TreeSet的第一种排序方式:让元素自身具备比较性。
元素需要实现Comparable接口,覆盖compareTo方法。
这种方式也称为元素的自然排序,或者默认排序。


TreeSet的第二种排序方式:
当元素自身不具备比较性时,或者具备的比较性不是所需要的。
这时就需要让集合自身具备比较性。
定义了比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。
方法:定义一个类,实现Comparator接口,覆盖compare方法。


当两种排序方式都存在时,以比较器为主。




泛型:JDK1.5版本后出现新特性。用于解决安全问题,是一个类型安全机制。


好处:
1、将运行时期出现问题ClassCastException转移到了编译时期。
方便于程序员解决问题,让运行时问题减少,安全。
2、避免了强制转换麻烦。


泛型格式:通过<>来定义要操作的引用数据类型。


在使用Java提供的对象时,什么时候使用泛型?
通常在集合框架中很常见,只要见到<>就要定义泛型。
其实<>就是用来接收类型的。
当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。


泛型类:在类定义时添加泛型。
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候。
早期定义Object来完成扩展,现在定义泛型来完成扩展。


泛型类定义的泛型,在整个类中有效。如果被方法使用。
那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定。
为了让不同方法可以操作不同类型,而且类型还不确定。
那么可以将泛型定义在方法上。


泛型方法:
public <T> void show(T t){

}


特殊之处:
静态方法不可以访问类上定义的泛型。因为在创建对象时才能确定泛型类型。
如果静态方法操作的引用数据类型不确定,可以将泛型定义在方法上。


泛型接口:
interface Inter<T>{
void show(T t);
}


①实现指明类型
class InterImpl implements Inter<String>{
public void show(String t){


}
}
②实现还是泛型
class InterImpl implements Inter<T>{
public void show(T t){
}
}


?通配符。也可以理解为占位符。
泛型的限定:
? extends E:可以接收E类型或者E的子类型。上限(限定父类)。
? super E:可以接收E类型或者E的父类型。下限(限定子类)。


Map
|--HashTable:底层是哈希表数据结构,不可以存入null键,null值。线程同步。效率低。JDK1.0
|--HashMap:底层是哈希表数据结构,允许使用null键,null值。线程不同步。效率高。JDK1.2
|--TreeMap:底层是二叉树数据结构,线程不同步。可以用于给map集合中的键进行排序。


Map和Set很像。其实Set底层就是使用Map集合。


Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。


什么时候使用map?
当数据之间存在着映射关系时,就可以选择map集合。


map常见操作:
1、添加

put(K key,V value);
putAll(Map<? extends K,? extends V>m);
2、删除
clear();
remove(key);
3、判断
containsKey(Object key);
containsValue(Object value);
isEmpty();
4、获取
get(Object key);
size();
values();//获取集合中的所有值。返回类型为Collection
entrySet();
keySet();


map集合的两种取出方式:
1、Set<k> keySet
:将map中所有的键存入到Set集合。因为Set具备迭代器。
所以可以通过迭代方式取出所有键,再根据get方法,获取每一个键对应的值。


map集合的取出原理:将map集合转成set集合。再通过迭代器取出。


2、set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,
而这个关系的数据类型就是:Map.Entry


Map.Entry:其实Entry也是一个接口,它是Map接口的一个内部接口。


HashMap:
添加元素,如果出现添加时,相同的键,那么添加的值会覆盖原有键对应值。
put方法会返回被覆盖的值。


可以通过get方法的返回值来判断一个键是否存在。通过返回null来判断。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值