JAVA高级基础(18)---泛型的定义及在集合中的使用

版权声明:如需转载请标明出处 https://blog.csdn.net/yj201711/article/details/84716653

泛型

泛型的引入

public class GenericDemo {
	public static void main(String[] args) {
		List  list  = new ArrayList();
		list.add(11);
		list.add("aaa");
		list.add('a');
		list.add(true);
		for(Object obj :list) {
			String str = (String)obj;
			System.out.println(str.length());
			
		}

}

因为在集合中所有的元素都是Object类型,不能去使用元素的具体类型的独有的方法。要使用的话需要进行类型转换,类型转换有会出现classCastException

在通常集合的使用中,我们在集合中存储的元素的类型,还是以同种类型为主。混杂类型的存储是较为少见

在创建集合的时候,去指定集合中所存储的数据的具体类型:泛型

泛型的定义

泛型又称为参数化类型。以集合为例:在声明的时候,将集合中保存的元素的类型以一种参数的形式来指定,再具体使用的时候,再根据实际的使用情况传入要存储的数据的类型

泛型在集合中的使用:
 

package org.lanqiao.generic.demo;

public class Student {
	private String name;
	private Integer age;
	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Student(String name, Integer age) {
		super();
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((age == null) ? 0 : age.hashCode());
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		if (age == null) {
			if (other.age != null)
				return false;
		} else if (!age.equals(other.age))
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}
	
}
package org.lanqiao.generic.demo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class GenericDemo {
	public static void main(String[] args) {

		List<String> list = new ArrayList<String>();
		list.add("aaa");
		list.add("11");
		list.add("bb");
		for(String s : list) {
			System.out.println(s.length());
			
		}
		System.out.println("------------Map中泛型的使用-------------");
		Map<String ,String> map = new HashMap<String ,String>();
		map.put("1","aa");
		map.put("2", "bb");
		map.put("3", "cc");
		//获取map的健集  再通过键获取值
		/*Set<String> set = map.keySet();
		for(String str : set) {
			String value = map.get(str);
			System.out.println(value);
			
		}*/
		Set<Map.Entry<String, String>> set =map.entrySet();
		/*for(Map.Entry<String, String>  me :set) {
			String key = me.getKey();
			String value = me.getValue();
			System.out.println(key +"--"+value );
			
		}*/
		Iterator<Map.Entry<String, String>>  iter = set.iterator();
		while(iter.hasNext()) {
			Map.Entry<String , String> entry = iter.next();
			System.out.println(entry.getKey() +"--"+entry.getValue());
			
		}
		System.out.println("------------使用泛型存储自定义类型-------------");
		Set<Student> s = new HashSet<Student>();
		Student stu1 = new Student("aaa",21);
		Student stu2 = new Student("bb",22);
		Student stu3 = new Student("cc",20);
		Student stu4 = new Student("dd",18);
		s.add(stu1);
		s.add(stu2);
		s.add(stu3);
		s.add(stu4);
		/*for(Student stu : s) {
			System.out.println(stu);
			
		}*/
		Iterator<Student> iterStu = s.iterator();
		while(iterStu.hasNext()) {
			Student ss = iterStu.next();
			System.out.println(ss.getName()+"--"+ss.getAge());
			
		}
//		jdk7泛型的新特点:
			List<String> l = new ArrayList<>();
	}
}

jdk7泛型的新特点

                    List<String> l = new ArrayList<>();

猜你喜欢

转载自blog.csdn.net/yj201711/article/details/84716653