泛型
作用
(1)数据安全
(2)防止类型转换时出错
例:list.add(默认是Object)
如果加了Double泛型,则自动变成list.add(Double),返回值类似,会直接返回double类型的数据,简言之,以Double泛型为例,如果不加泛型,则默认操作是Object类型,如果加了Double泛型,则默认操作是Double类型。
package lambda;
import java.util.*;
public class demo04 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("abc");
String s = list.get(0);
System.out.println(s);
Set<String> set = new HashSet<>();
set.add("abc");
Map<String,Integer> map = new HashMap<>();
map.put("s01",2);
map.put("s02",3);
map.put("s03",1);
Set<Map.Entry<String, Integer>> entries = map.entrySet();
for(Map.Entry<String,Integer> entry :entries){
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
System.out.println("迭代器.....");
//取key
Set<String> keys = map.keySet();
//遍历key
Iterator<String> iterator = keys.iterator();
while (iterator.hasNext()){
String key = iterator.next();
Integer value = map.get(key);
System.out.println(key + "---" + value);
}
}
}
再做一个练习,根据人的名字查找全部信息
先写一个Person类
package lambda;
public class Person {
private String name;
private int age;
private String city;
//添加get、set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
//添加构造器
public Person(String name, int age, String city) {
this.name = name;
this.age = age;
this.city = city;
}
//重写toString方法
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", city='" + city + '\'' +
'}';
}
}
代码实现:
package lambda;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class demo05 {
public static void main(String[] args) {
Map <String , Person> map = new HashMap <> ();
Person p1 = new Person("zs",21,"西安");
Person p2 = new Person("ls",22,"上海");
Person p3 = new Person("ww",23,"北京");
Person p4 = new Person("zl",24,"九江");
Person p5 = new Person("sq",25,"瑞金");
//key:名字 value:人
map.put("zs",p1);
map.put("ls",p2);
map.put("ww",p3);
map.put("zl",p4);
map.put("sq",p5);
System.out.println("请输入人的名字:");
Scanner in = new Scanner(System.in);
String name = in.next();
Person person = map.get(name);
System.out.println(person);//如果不是null,在打印时会调用toString;如果是null,则不调用。
System.out.println(person.toString());
//底层实现:
// Set <String> names = map.keySet();
// //在names中查找name
// for(String n : names){
//
// if(n.equals(name)){
// Person person = map.get(n);
// System.out.println(person);
// System.out.println(person.toString());
// }
// }
}
}