1 package cn.itcast_01; 2  3 import java.util.ArrayList; 4 import java.util.Iterator; 5  6 /* 7  * ArrayList存储字符串并遍历 8  *  9  * 我们按照正常的写法来写这个程序, 结果确出错了。10  * 为什么呢?11  *         因为我们开始存储的时候,存储了String和Integer两种类型的数据。12  *         而在遍历的时候,我们把它们都当作String类型处理的,做了转换,所以就报错了。13  * 但是呢,它在编译期间却没有告诉我们。14  * 所以,我就觉得这个设计的不好。15  * 回想一下,我们的数组16  *         String[] strArray = new String[3];17  *         strArray[0] = "hello";18  *         strArray[1] = "world";19  *         strArray[2] = 10;20  * 集合也模仿着数组的这种做法,在创建对象的时候明确元素的数据类型。这样就不会在有问题了。21  * 而这种技术被称为:泛型。22  * 23  * 泛型:是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。参数化类型,把类型当作参数一样的传递。 24  * 格式:25  *         <数据类型>26  *         此处的数据类型只能是引用类型。27  * 好处:28  *         A:把运行时期的问题提前到了编译期间 29  *         B:避免了强制类型转换 30  *         C:优化了程序设计,解决了黄色警告线 31  */32 public class GenericDemo {33     public static void main(String[] args) {34         // 创建35         ArrayList<String> array = new ArrayList<String>();36 37         // 添加元素38         array.add("hello");39         array.add("world");40         array.add("java");41         // array.add(new Integer(100));42         //array.add(10); // JDK5以后的自动装箱43         // 等价于:array.add(Integer.valueOf(10));44 45         // 遍历46         Iterator<String> it = array.iterator();47         while (it.hasNext()) {48             // ClassCastException49             // String s = (String) it.next();50             String s = it.next();51             System.out.println(s);52         }53 54         // 看下面这个代码55         // String[] strArray = new String[3];56         // strArray[0] = "hello";57         // strArray[1] = "world";58         // strArray[2] = 10;59     }60 }

类 ArrayList<E>---像这种加上<E>,都是表示要明确类型

下面我们来改进以前的代码:ArrayList存储字符串并遍历泛型

 1 package cn.itcast_02; 2  3 import java.util.ArrayList; 4 import java.util.Iterator; 5  6 /* 7  * 泛型在哪些地方使用呢? 8  *         看API,如果类,接口,抽象类后面跟的有<E>就说要使用泛型。一般来说就是在集合中使用。 9  */10 public class ArrayListDemo {11     public static void main(String[] args) {12         // 用ArrayList存储字符串元素,并遍历。用泛型改进代码13         ArrayList<String> array = new ArrayList<String>();14 15         array.add("hello");16         array.add("world");17         array.add("java");18 19         Iterator<String> it = array.iterator();20         while (it.hasNext()) {21             String s = it.next();22             System.out.println(s);23         }24         System.out.println("-----------------");25 26         for (int x = 0; x < array.size(); x++) {27             String s = array.get(x);28             System.out.println(s);29         }30     }31 }

下面我们来改进以前的代码:ArrayList存储自定义对象并遍历泛型

 1 package cn.itcast_02; 2  3 import java.util.ArrayList; 4 import java.util.Iterator; 5  6 /* 7  * 需求:存储自定义对象并遍历。 8  *  9  * A:创建学生类10  * B:创建集合对象11  * C:创建元素对象12  * D:把元素添加到集合13  * E:遍历集合14  */15 public class ArrayListDemo2 {16     public static void main(String[] args) {17         // 创建集合对象18         // JDK7的新特性:泛型推断。19         // ArrayList<Student> array = new ArrayList<>();20         // 但是我不建议这样使用。21         ArrayList<Student> array = new ArrayList<Student>();22 23         // 创建元素对象24         Student s1 = new Student("曹操", 40); // 后知后觉25         Student s2 = new Student("蒋干", 30); // 不知不觉26         Student s3 = new Student("诸葛亮", 26);// 先知先觉27 28         // 添加元素29         array.add(s1);30         array.add(s2);31         array.add(s3);32 33         // 遍历34         Iterator<Student> it = array.iterator();35         while (it.hasNext()) {36             Student s = it.next();37             System.out.println(s.getName() + "---" + s.getAge());38         }39         System.out.println("------------------");40 41         for (int x = 0; x < array.size(); x++) {42             Student s = array.get(x);43             System.out.println(s.getName() + "---" + s.getAge());44         }45     }46 }

更多相关文章

  1. android 腾讯微博分享功能
  2. Android(安卓)Audio 分析
  3. Android异步操作AsyncTask
  4. android Fragment 与 Fragment 之间传参(对象)
  5. Android(安卓)TestView获取每一行文字的方法
  6. ListView添加事件并获取选中项的值
  7. Volley框架解读(二)
  8. Android(安卓)Camera 调用流程
  9. Android——Activity之间传递 实体类(Bean)

随机推荐

  1. 关于Android短信管理
  2. Android架构分析之基于Android系统的C应
  3. Android如何解析Intent Filter
  4. Android中对媒体的使用
  5. Android开发指南中文版(二)Application Fun
  6. Android线性LinearLayout布局xml属性介绍
  7. Flutter学习笔记(30)--Android原生与Flutte
  8. android adb命令
  9. Android之——史上最简单自定义开关按钮
  10. Android中数据存储——SharedPreferences