泛型1.为什么要用泛型?在泛型诞生之前,我们经常会遇到这样的问题,如下代码所示:ArrayListarrayList=newArrayList();arrayList.add("Java");arrayList.add(24);for(inti=0;iarrayList=newArrayList();arrayList.add("Java");此时如果向arrayList中添加非String类型的元素,编译器会报错,提醒开发人员Person插入相同类型的元素。报错信息如下图所示:这样一开始的例子就可以避免在程序运行过程中类型不一致导致报错的问题。3、泛型的优势泛型的优势主要体现在以下三个方面。安全性:不用担心程序运行过程中的类型转换错误。避免类型转换:如果是非泛型,获取的元素是Object类型,需要进行类型转换。高可读性:在编码阶段就清楚知道集合中元素的类型。迭代器(Iterator)1.为什么要使用迭代器?我们回想一下,在迭代器(Iterator)没有出现之前,如果要遍历数组和集合,就需要使用方法。数组遍历,代码如下:String[]arr=newString[]{"Java","Java虚拟机","Java中文社区"};for(inti=0;ilist=newArrayList(){{add("Java");add("Java虚拟机");add("Java中文社区");}};for(inti=0;ilist=newArrayList(){{add("Java");add("Java虚拟机");add("Java中文社区");}};Iteratoriterator=list.iterator();//遍历while(iterator.hasNext()){Stringstr=(String)iterator.next();if(str.equals("Java中文社区")){iterator.remove();}}System.out.println(列表);程序执行结果:[Java,Java虚拟机]forEachRemaining使用如下:Listlist=newArrayList(){{add("Java");add("Java虚拟机");add("Java中文社区");}};//forEachRemaining使用list.iterator().forEachRemaining(item->System.out.println(item));相关采访问题1.为什么迭代器的next()返回的是Object类型?答:因为迭代器不需要关注容器的内部细节,next()通过返回Object类型可以接收任何类型的对象。2、HashMap有几种遍历方法?答:HashMap的遍历分为以下四种方式。方法一:entrySet遍历方法二:迭代器遍历方法三:遍历所有key和value方法四:通过key值遍历上述方法代码实现如下:MaphashMap=newHashMap();hashMap.put("name","subsistent");hashMap.put("sex","guess");//方法一:遍历entrySetfor(Map.Entryitem:hashMap.entrySet()){System.out.println(item.getKey()+":"+item.getValue());}//方法二:迭代器遍历Iterator>iterator=hashMap.entrySet().iterator();while(iterator.hasNext()){Map.Entryentry=iterator.next();System.out.println(entry.getKey()+":"+entry.getValue());}//方法三:遍历所有key和valuefor(Objectk:hashMap.keySet()){//循环所有keySystem.out.println(k);}for(Objectv:hashMap.values()){//循环所有的值System.out.println(v);}//方法四:遍历key值for(Objectk:hashMap.keySet()){System.out.println(k+":"+hashMap.get(k));}3.以下关于泛型的说法错误的是?A:泛型可以修改类B:泛型可以修改方法C:泛型不能修改接口D:以上说法都不对答案:选择C、泛型可以修饰类、方法、接口和变量。例如:`publicinterfaceIterable{}`4.下面程序执行的结果是什么?Listlist=newArrayList<>();Listlist2=newArrayList<>();System.out.println(list.getClass()==list2.getClass());答:程序执行结果为真。题目分析:Java中泛型会在编译时进行类型擦除,所以Listlist和Listlist2经过类型擦除后的结果都是java.util.ArrayLis,然后是list.getClass()==list2.getClass()的结果也必须为真。5.List