本周学习了泛型,Map集合还有集合工具类。
1.泛型将运行时期的问题转移到了编译时期,避免了强制类型转换;泛型可以用在接口上,类上还有方法上。
1.2 定义在接口上的泛型。
interface Inter <Y>{//在接口上定义了一个不明确要操作的引用类型
void show(Y y);}
1.3定义在方法上的泛型。
public static <Y> void method(Y obj){
System.out.println("method:"+obj);
}
1.4定义在类上的泛型。
public class Tool<QQ>{
private QQ q;
public QQ getObject() {
return q;
}
public void setObject(QQ q) {
this.q = q;
}
1.5 泛型通配符
<? extends M> 可以接收M类及其子类。
<? super M> 可以接收M类及其父类。
2 Map集合,一次可以添加一对元素,存储的是键值对,是双列集合;Map集合必须保证键的唯一性。
2.2 Map集合的常见子类。
HashTable:数据结构是哈希表支持同步,不允许null作为键和值。
|---Properties:存储的是键值对型的配置文件信息,可以与IO相结合。
HashMap:内部数据结构是哈希表不支持同步,允许null作为键和值。
|---LinkedHashMap:数据结构是链表和哈希表,可以实现存取一致(顺序)。
TreeMap:数据结构是二叉树不支持同步。可以对集合中的键进行排序。
注意:在使用HashMap和TreeMap时,要分别覆盖hashCode equals和实现comparable和comparator接口覆盖比较方法。
2.3 Map集合取出元素的方式。(在Map集合中是没有迭代器的,所以它要取出元素,必须经过一系列的转化)
1.Collection<V> values();
返回此映射中包含的值的Collection视图。
2.Set<V> KeySet();
返回此映射中包含键的Set视图,再通过Set的迭代器取到每一个键,在通过键取值。
3.Set<Map.Entry<K,V>> entrySet();
返回此映射中包含的映射关系Set视图,再通过Set的迭代器和getKey和getValue方法取键和值。
4.foreach语句,也可以完成对集合的遍历(包括Map集合)
通常只用来遍历,不对集合进行其他的操作。
格式for(类型 变量:Collection集合|数组)
3.工具类是对集合和数组功能进行的补充;工具类有两种一种是集合工具类Collections,另一种是数组工具类Arrays(最重要的是asList方法可以将数组转为集合),里面的方法全部都是静态的,具体使用的话可以去查API。