泛型
文章目录
- 泛型
- 1、认识泛型
- 2、泛型在集合中的应用
- 1)使用LinkedList的泛型:
- 2)使用HashMap的泛型
1、认识泛型
泛型是JDK 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数,使代码可以应用于多种类型,简单来说,java语言引入泛型的好处是安全简单,且所有强制转换都是自动和隐式进行的,提高了代码的重用率。
泛型的定义语法格式如下:类1或者接口<类型实参> 对象=new 类2<类型实参>();
例如:ArrayLIst list=new ArrayList();
上述代码表示创建一个AarryList集合,但规定该集合中存储的元素类型必须为String类型。
2、泛型在集合中的应用
List和ArrayList的泛型形式时List 和ArrayList ,ArrayList的常用方法和ArrayList类基本一样,
LinkedList的常用方法和LinkedList类基本一样。
1)使用LinkedList的泛型:
package ArrayLIst;
import java.util.LinkedList;
public class NewTitle2 {
int id;
String name;
String creator;
public NewTitle2() {
}
public NewTitle2(int id, String name, String creator) {
this.id = id;
this.name = name;
this.creator = creator;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
public static void main(String[] args) {
NewTitle2 car = new NewTitle2(1, "汽车", "管理员");
NewTitle2 medical = new NewTitle2(2, "医学", "管理员");
NewTitle2 fun = new NewTitle2(3, "娱乐", "管理员");
NewTitle2 gym = new NewTitle2(4, "体育", "管理员");
LinkedList<NewTitle2> newsTileList = new LinkedList<NewTitle2>();
newsTileList.add(car);
newsTileList.add(medical);
newsTileList.addFirst(fun);//void addFirst(Object obj) 将指定元素插入到当前集合的首部
newsTileList.addLast(gym);//void addLast(Object obj) 将指定元素插入到当前集合的尾部
System.out.println("头条和末条新闻已添加");
//获取头条以及末条新闻标题
NewTitle2 first = newsTileList.getFirst();//Object getFirst() 获得当前集合的第一个元素
System.out.println("头条新闻的标题为:"+first.getName());
NewTitle2 last = newsTileList.getLast();//Object getLast() 获取当前集合的最后一个元素
System.out.println("末条新闻的标题为:"+last.getName());
//删除头条和末条新闻标题
newsTileList.removeFirst();//Object removeFirst() 移除并返回点前集合的第一个元素
newsTileList.removeLast();//Object removeLast() 移除并返回当前的最后一个元素
System.out.println("头条和末条新闻标题已移除");
System.out.println("遍历所有的新闻标题");
for (NewTitle2 title2:newsTileList){
System.out.println("新闻标题名称:"+title2.getName());
}
}
}
2)使用HashMap的泛型
package HashMap;
import java.util.HashMap;
public class Student {
String name;
String sex;
public Student() {
}
public Student(String name, String sex) {
this.name = name;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public static void main(String[] args) {
Student student1 = new Student("黎明", "男");//创建保存“键值对”的集合对象
Student student2 = new Student("琉璃", "女");
HashMap<String,Student> students = new HashMap<String, Student>();
students.put("jack",student1);
students.put("Rose",student2);
System.out.println("已添加"+students.size()+"个学生信息");
System.out.println("键集:"+students.keySet());//输出键集
//判断是否存在jack这个键,如果存在,则根据键获取相应的值
String key="jack";
if(students.containsKey(key)){
Student student =students.get(key);
System.out.println("英文名"+key+"的学生姓名:"+student.getName());
}
System.out.println("输出学生名:");
for (Object key1:students.keySet()){
System.out.println(key1.toString());
}
//输出学生详细信息
System.out.println("输出学生详细信息");
for (Student value:students.values()){
System.out.println("姓名:"+value.getName()+"性别:"+value.getSex());
}
}
}
在学习如何使用泛型之前,还需要了解以下两个重要的概念:
- 参数化类型:参数化类型包含一个类的接口,以及实际的类型参数列表。
- 类型变量:是一种非限定性标识符,用来指定类、接口或者方法的类型。