
package com.qf.demo01;
import java.util.ArrayList;
import java.util.Collection;
import java.util.zip.CRC32;
public class Test1Generics {
public static void main(String[] args) {
//1.不适用泛型
Collection c1 = new ArrayList();
c1.add("abc");//String-->Object
c1.add(100);//int->Integer-->Object
//for-each遍历
for(Object obj:c1){
if(obj instanceof String){
String s = (String) obj;//自己手动的向下转型
System.out.println(s);
}
}
System.out.println("----------------------");
//2.使用泛型
Collection<String> c2 = new ArrayList<>();
c2.add("aaa");//String-->String
c2.add("bbb");
c2.add("ccc");
c2.add("123");//String
System.out.println(c2);
for(String s:c2){
System.out.println(s);
}
// Collection<int> c3 = new ArrayList<>();//报错,不能明目张胆写基本类型作为泛型
Collection<Integer> c3 = new ArrayList<>();
c3.add(100);//int-->Integer,自动装箱
c3.add(200);
// c3.add("123");//报错,不允许,,泛型Integer,就只能存储Integer的对象。。不能存储String等其他的类型了
for(int i:c3){//自动拆箱
System.out.println(i);
}
// Collection<Object> c4 = new ArrayList<String>();//必须前后一样
//课间练习:创建一个集合容器,声明泛型为Person,存储3个人的对象,然后使用for-each遍历输出。
}
}
package com.qf.demo01;
import java.util.ArrayList;
import java.util.Collection;
class Person{
private String name;
private int age;
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
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 Person() {
super();
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
}
public class Test2Generics {
public static void main(String[] args) {
//课间练习:创建一个集合容器,声明泛型为Person,存储3个人的对象,然后使用for-each遍历输出。
Collection<Person> c1 = new ArrayList<Person>();
Person p1 = new Person("王二狗", 18);
Person p2 = new Person();
p2.setName("李小花");
p2.setAge(17);
c1.add(p1);//p1 的地址
c1.add(p2);//p2的地址
c1.add(new Person("铁柱", 17));//匿名对象的地址
//equals():Object,Person类重写
System.out.println(c1.contains(p1));//判断c1中是否包含了p1
System.out.println(c1.contains(new Person("王二狗", 18)));//true
System.out.println(c1.contains("王二狗"));//
for(Person p:c1){
// System.out.println(p);
System.out.println(p.getName()+"\t"+p.getAge());
}
}
}