黑马程序员技术交流社区

标题: 有关集合框架泛型的问题 [打印本页]

作者: littlefoxtail    时间: 2013-5-12 15:07
标题: 有关集合框架泛型的问题
本帖最后由 littlefoxtail 于 2013-5-13 13:24 编辑

  1. import java.util.*;
  2. import java.util.Comparator;

  3. public class Noname1 {

  4.         /**
  5.          * @param args
  6.          */
  7.         public static void main(String[] args) {
  8.                 ////元素为People的ArrayList集合
  9.                 ArrayList<Person> al = new ArrayList<Person>();
  10.                 al.add(new Person("abc1"));
  11.                 al.add(new Person("abc2"));
  12.                 al.add(new Person("abc3"));
  13.                 Iterator<Person> it = al.iterator();

  14.                 while(it.hasNext())
  15.                 {
  16.                         System.out.println(it.next().getName());
  17.                 }

  18.                 ArrayList<Student> al1 = new ArrayList<Student>();//元素为Student的ArrayList集合
  19.                 al1.add(new Student("abc--1"));
  20.                 al1.add(new Student("abc--2"));
  21.                 al1.add(new Student("abc--3"));
  22.                
  23.                 Iterator<Student> it1 = al1.iterator();
  24.                 while(it1.hasNext())
  25.                 {
  26.                         System.out.println(it1.next().getName());
  27.                 }
  28.                
  29.                 System.out.println(al.addAll(al1));//true
  30.                
  31.                 Iterator<Person> it2= al.iterator();
  32.                 while(it2.hasNext())
  33.                 {
  34.                         System.out.println(it2.next().getName());
  35.                         /*打印abc1
  36.                               abc2
  37.                               abc3
  38.                                   abc--1
  39.                                   abc--2
  40.                                   abc--3*/
  41.                 }
  42.                 System.out.println("-----");
  43.                 al.add(new Student("abc--4"));
  44.                
  45.                 it2= al.iterator();
  46.                 while(it2.hasNext())
  47.                 {
  48.                         System.out.println(it2.next().getName());
  49.                         /*打印abc1
  50.                                   abc2
  51.                                   abc3
  52.                                   abc--1
  53.                                   abc--2
  54.                                   abc--3
  55.                               abc--4*/
  56.                 }

  57.         }

  58. }
  59. class Person{
  60.         private String name;
  61.         Person(String name){
  62.                 this.name=name;
  63.         }
  64.         public String getName(){
  65.                 return name;
  66.         }
  67. }
  68. class Student extends Person{
  69.         Student(String name){
  70.                 super(name);
  71.         }
  72. }
  73. class Comp implements Comparator<Person>{
  74.         public int compare(Person s1,Person s2){
  75.                 return s1.getName().compareTo(s2.getName());
  76.         }
  77. }
复制代码
有两个问题想不太明白
第一个ArrayList已经指定类型为People
1.add方法可以add子类类型
2.addAll方法可以添加第二个ArrayList集合中所有Student元素
泛型中应该没有多态这一说吧
作者: 萌小子    时间: 2013-5-12 18:00
所有子类都可以的,难道能说Student不是一个People么?
作者: 炉海佳    时间: 2013-5-12 19:06
1.add方法可以add子类类型//这里和继承没有关系,因为你又new了一个集合而且规定泛型就是student,你装进去的也是student
2.addAll方法可以添加第二个ArrayList集合中所有Student元素//这里是对的,addall就是把一个集合中全部的元素添加到另一个集合中,集合装集合

作者: 刘胜寒    时间: 2013-5-13 09:03
注意结贴。。。查看你们的帖子真的很耗时时间。。真心希望你们及时结贴。。真的很累。。
谢谢合作
作者: DMY2008    时间: 2013-5-13 10:49
既然问题解决了,为什么不改成解决呢!!伤不起





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2