java泛型:有关ArrayList用泛型和不用泛型的一个添加名言和删除名言的对比例子

package arraylist;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class FamousQuotes {
	private static ArrayList listOfFamousQuotes;
	private static ArrayList<String> listOfFamousQuotesTypechecked;

	public static void main(String[] args) {
		FamousQuotes app = new FamousQuotes();

		System.out.println("没有引用泛型添加三个人说的三句名言");
		app.bulidList();
		app.printList();
		System.out.println("=======================");

		System.out.println("引用泛型添加三个人说的三句名言");
		app.bulidCheckedList();
		app.printCheckedList();
		System.out.println("========================");

		System.out.println("没有泛型版本的删除方式指定人说的名言");
		String strAuthor = "Winston Churchill";
		System.out.println("删除这个人说的名言后再输出看看还有没有这个人说的话  "+strAuthor);
		app.expurgate(listOfFamousQuotes, strAuthor);
		app.printList();

		System.out.println("有泛型版本的删除方式指定人说的名言");
		System.out.println("删除这个人说的名言后再输出看看还有没有这个人说的话  "+strAuthor);
		app.expurgateCheckedList(listOfFamousQuotesTypechecked, strAuthor);
		app.printCheckedList();

	}
	//没有泛型添加三个人说的三句名言
	void bulidList()
	{
		listOfFamousQuotes = new ArrayList();
		listOfFamousQuotes.add("Where there is love there is life - Mahatma Gandhi");
		listOfFamousQuotes.add("A joke is a very serious thing - Winston Churchill");
		listOfFamousQuotes.add("In the end,everything is a gag -Charlie Chaplin");
	}
	//有泛型添加三个人说的三句名言
	void bulidCheckedList()
	{
		listOfFamousQuotesTypechecked = new ArrayList<String>();
		listOfFamousQuotesTypechecked.add("Where there is love there is life - Mahatma Gandhi");
		listOfFamousQuotesTypechecked.add("A joke is a very serious thing - Winston Churchill");
		listOfFamousQuotesTypechecked.add("In the end,everything is a gag -Charlie Chaplin");
	}
	//没有泛型输出三个人说的三句名言
	void printList()
	{
		Iterator listIterator = listOfFamousQuotes.iterator();
		while(listIterator.hasNext())
		{
			String quote = (String)listIterator.next();
			System.out.println(quote);
		}
	}
	//有泛型输出三个人说的三句名言
	void printCheckedList()
	{
		Iterator<String> quoteIterator = listOfFamousQuotesTypechecked.iterator();
		while(quoteIterator.hasNext())
		{
			String quote = quoteIterator.next();
			System.out.println(quote);
		}
	}
	//没泛型删除
	void expurgate(Collection c,String strAuthor)
	{
		for(Iterator i=c.iterator();i.hasNext();)
		{
			if(((String)i.next()).contains(strAuthor))
			{
				i.remove();
			}
		}
	}
	//有泛型的删除
	void expurgateCheckedList(Collection<String> c,String strAuthor)
	{
		for(Iterator<String> i = c.iterator();i.hasNext();)
		{
			if(i.next().contains(strAuthor))
			{
				i.remove();
			}
		}
	}

}

时间: 2024-10-07 11:34:25

java泛型:有关ArrayList用泛型和不用泛型的一个添加名言和删除名言的对比例子的相关文章

Effective Java 第三版——32.合理地结合泛型和可变参数

Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 32. 合理地结合泛型和可变参数 在Java 5中,可变参数方法(条目 53)和泛型都被添加到平台中,所以你可能希望它们能够正常交互; 可悲的是,他们并没有. 可变参数的目

java中利用反射机制绕开编译器对泛型的类型限制

首先看下面这个例子 public static void main(String[] args) { ArrayList<Integer> al1 = new ArrayList<Integer>(); al1.add(1); ArrayList<String> al2 = new ArrayList<String>(); al2.add("hello"); //int型链表和string型链表,结果为true System.out.pr

菜鸟学Java(二十二)——重新认识泛型

泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法. Java语言引入泛型的好处是安全简单. 规则和限制 1.泛型的类型参数只能是类类型(包括自定义类),不能是简单类型.2.同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的.3.泛型的类型参数可以有多个.4.泛型的参数类型可以使用extends语句,例如<T extends sup

java强化篇(四)---注解、泛型。类加载器.线程

Java的三个基本注解 @Deprecated :标记此程序元素已过时,通常是因为它很危险或存在更好的选择. @SuppressWarnings :取消显示指定的编译器警告. @Override :表示一个方法声明打算重写超类中的另一个方法声明.如果方法利用此注释类型进行注解但没有重写超类方法,则编译器会生成一条错误消息. 元注解@Retention--定义注解类的存在区域,有三种取值:RetentionPolicy.SOURCE.RetentionPolicy.CLASS. Retention

java 27 - 7 反射之 通过反射越过泛型检查

之前学过的集合里面都有泛型,规定了泛型的类型以后,就不能往这个集合添加除了这个类型之外的类型数据了. 那么,有什么方法可以越过这个泛型,添加特定类型以外的类型数据么? 例子:  往ArrayList<Integer>集合中添加一个字符串String类型的数据 分析: 通过查看ArrayList的add()方法,可以知道,add(E e).E这个泛型是Object的. 就可以通过反射来直接调用ArrayList集合的add方法进行添加 1 public static void main(Stri

java JDK8 学习笔记——第18章 自定义泛型、枚举与注释

第十八章 自定义泛型.枚举与注释 18.1 自定义泛型 泛型定义: (1)仅定义在方法上的泛型语法 (2)用来限制泛型可用类型的extends与super关键字(3)?类型通配字符的使用 18.1.1 使用extends与? 1.若extends之后指定了类与接口,想再指定其他接口,可以使用&连接. 2.如果B是A的子类,而Node< B>可视为一种Node< A>,则称Node具有共变性或有弹性的.Java泛型不具有共变性,可以使用类型通配字符?与extends来声明变量

黑马程序员-Java基础-集合框架-TreeSet、二叉树、泛型

第一讲 TreeSet 1.  概述 TreeSet可以对Set集合中的元素进行排序,按照自然顺序排. 2.  演示代码 输出结果: 总结:TreeSet会对元素进行自然排序,大写排在小写前面. 第二讲  TreeSet存储自定义对象 1. 概述: 将自定义对象存储到TreeSet集合中. 2. 思路: 自定义学生类,并将学生对象存储到TreeSet中,在存储过程中按照年龄排序. 3. 练习:往TreeSet集合中存储自定义对象(学生),并按照学生年龄进行排序 小结: 自定义对象需要重写Comp

Java 集合(ArrayList)应用

JAVA集合 对象数组 集合类之ArrayList 学生管理系统 NO.one 对象数组 1.1 对象数组描述 A:基本类型的数组:存储的元素为基本类型 int[] arr={1,2,3,4} B:对象数组:存储的元素为引用类型 Student[] stus=new Student[3]; Student代表一个自定义类 Stus数组中stus[0],stus[1],stus[2]的元素数据类型为Student, 都可以指向一个Student对象 1.2 对象数组案例: 创建一个学生数组,存储三

从头认识java-13.11 对比数组与泛型容器,观察类型擦除给泛型容器带来什么问题?

这一章节我们继续类型擦除的话题,我们将通过对比数组与泛型容器,观察类型擦除给泛型容器带来什么问题? 1.数组 package com.ray.ch13; public class Test { public static void main(String[] args) { Fruit[] fruits = new Apple[5]; fruits[0] = new Apple(); fruits[1] = new Fuji(); fruits[2] = new Fruit(); } } cla