Android(java)学习笔记89:泛型概述和基本使用
2015-05-26 09:41
956 查看
package cn.itcast_01; import java.util.ArrayList; import java.util.Iterator; /* * ArrayList存储字符串并遍历 * * 我们按照正常的写法来写这个程序, 结果确出错了。 * 为什么呢? * 因为我们开始存储的时候,存储了String和Integer两种类型的数据。 * 而在遍历的时候,我们把它们都当作String类型处理的,做了转换,所以就报错了。 * 但是呢,它在编译期间却没有告诉我们。 * 所以,我就觉得这个设计的不好。 * 回想一下,我们的数组 * String[] strArray = new String[3]; * strArray[0] = "hello"; * strArray[1] = "world"; * strArray[2] = 10; * 集合也模仿着数组的这种做法,在创建对象的时候明确元素的数据类型。这样就不会在有问题了。 * 而这种技术被称为:泛型。 * * 泛型:是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。参数化类型,把类型当作参数一样的传递。 * 格式: * <数据类型> * 此处的数据类型只能是引用类型。 * 好处: * A:把运行时期的问题提前到了编译期间 * B:避免了强制类型转换 * C:优化了程序设计,解决了黄色警告线 */ public class GenericDemo { public static void main(String[] args) { // 创建 ArrayList<String> array = new ArrayList<String>(); // 添加元素 array.add("hello"); array.add("world"); array.add("java"); // array.add(new Integer(100)); //array.add(10); // JDK5以后的自动装箱 // 等价于:array.add(Integer.valueOf(10)); // 遍历 Iterator<String> it = array.iterator(); while (it.hasNext()) { // ClassCastException // String s = (String) it.next(); String s = it.next(); System.out.println(s); } // 看下面这个代码 // String[] strArray = new String[3]; // strArray[0] = "hello"; // strArray[1] = "world"; // strArray[2] = 10; } }
类 ArrayList<E>---像这种加上<E>,都是表示要明确类型
下面我们来改进以前的代码:ArrayList存储字符串并遍历泛型package cn.itcast_02; import java.util.ArrayList; import java.util.Iterator; /* * 泛型在哪些地方使用呢? * 看API,如果类,接口,抽象类后面跟的有<E>就说要使用泛型。一般来说就是在集合中使用。 */ public class ArrayListDemo { public static void main(String[] args) { // 用ArrayList存储字符串元素,并遍历。用泛型改进代码 ArrayList<String> array = new ArrayList<String>(); array.add("hello"); array.add("world"); array.add("java"); Iterator<String> it = array.iterator(); while (it.hasNext()) { String s = it.next(); System.out.println(s); } System.out.println("-----------------"); for (int x = 0; x < array.size(); x++) { String s = array.get(x); System.out.println(s); } } }
下面我们来改进以前的代码:ArrayList存储自定义对象并遍历泛型
package cn.itcast_02; import java.util.ArrayList; import java.util.Iterator; /* * 需求:存储自定义对象并遍历。 * * A:创建学生类 * B:创建集合对象 * C:创建元素对象 * D:把元素添加到集合 * E:遍历集合 */ public class ArrayListDemo2 { public static void main(String[] args) { // 创建集合对象 // JDK7的新特性:泛型推断。 // ArrayList<Student> array = new ArrayList<>(); // 但是我不建议这样使用。 ArrayList<Student> array = new ArrayList<Student>(); // 创建元素对象 Student s1 = new Student("曹操", 40); // 后知后觉 Student s2 = new Student("蒋干", 30); // 不知不觉 Student s3 = new Student("诸葛亮", 26);// 先知先觉 // 添加元素 array.add(s1); array.add(s2); array.add(s3); // 遍历 Iterator<Student> it = array.iterator(); while (it.hasNext()) { Student s = it.next(); System.out.println(s.getName() + "---" + s.getAge()); } System.out.println("------------------"); for (int x = 0; x < array.size(); x++) { Student s = array.get(x); System.out.println(s.getName() + "---" + s.getAge()); } } }
相关文章推荐
- Android(java)学习笔记91:泛型接口的概述和使用
- Android(java)学习笔记69:JDK5之后的Lock锁的概述和使用
- Android(java)学习笔记73:线程组的概述和使用
- Android(java)学习笔记76:多线程-定时器概述和使用
- Android(java)学习笔记79:java中InetAddress类概述和使用
- Android(java)学习笔记90:泛型类的概述和使用
- Android(java)学习笔记142:使用Sqlite基本流程
- Android(java)学习笔记122:TabActivity使用
- Android(java)学习笔记129:Tab标签的使用
- Android(java)学习笔记130:ProgressBar使用的
- Android(java)学习笔记140:SpannableString类的使用
- Android(java)学习笔记146:Bundle和Intent类使用和交互
- Android(java)学习笔记151: SurfaceView使用
- Android(java)学习笔记153:layout_weight使用注意事项
- Android(java)学习笔记154:使用GridView以及重写BaseAdapter
- Android(java)学习笔记157:使用Dexdump等工具进行反编译
- Android(java)学习笔记162:Android开发基本知识
- Java学习笔记(十二):泛型的使用
- Android(java)学习笔记187:Android中操作XML数据(使用Pull解析器)
- Android(java)学习笔记193:利用谷歌API对数据库增删改查(推荐使用)