泛型:
1.在集合中使用泛型
2.自定义泛型、泛型接口、泛型方法(了解)
3.泛型和继承的关系
4.通配符
泛型的特点:
1.限定了数据类型,不用强转,便捷
2.保护了类型的安全
3.避免了类型转化的异常
// 1.在没有使用泛型的情况
@Test
public void test1() {
List list = new ArrayList();
list.add(90);
list.add(88);
list.add(99);
// 1.没有使用泛型,任何Object及其子类对象都可以添加进来
list.add(new String("abc"));
for (int i = 0; i < list.size(); i++) {
// 2.强制转化为int类型时,引发异常:ClassCastException异常(类型转化异常)
int sc = (int) list.get(i);
System.out.println(sc);
}
}
// 2.在集合中使用泛型
// 泛型内部只能存储对象类型
@Test
public void test2() {
List<Integer> list = new ArrayList<Integer>();
list.add(90);
list.add(88);
list.add(99);
// 使用for循环
for (int i = 0; i < list.size(); i++) {
int score = list.get(i);
System.out.println(score);
}
// 使用迭代器
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
@Test
public void test3() {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("张三", 80);
map.put("李四", 88);
map.put("王五", 98);
// 方式一
// 先获取所有key的集合
Set<String> set = map.keySet();
// 遍历key的集合 得到每一个key值
for (String key : set) {
// 根据key值调用get()方法获取对应的value值
Integer value = map.get(key);
System.out.println(key + "-" + value);
}
System.out.println("------------------");
//方式二
//首先通过map.entrySet()得到Set集合,Set集合中包含得是一个一个Entry(key-value)
//通过entry的getKey()方法得到key值,通过entry的getValue()得到value值
Set<Entry<String,Integer>> entrySet = map.entrySet();
//遍历循环Set集合,得到Entry
// for(Entry<String,Integer> entry:map.entrySet()){
for(Entry<String, Integer> entry:entrySet){
String key=entry.getKey();
int value=entry.getValue();//自动拆箱
System.out.println(key+"-"+value);
}
}