A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© littlefoxtail 中级黑马   /  2013-5-12 15:07  /  1933 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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元素
泛型中应该没有多态这一说吧

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

4 个回复

倒序浏览
所有子类都可以的,难道能说Student不是一个People么?
回复 使用道具 举报
1.add方法可以add子类类型//这里和继承没有关系,因为你又new了一个集合而且规定泛型就是student,你装进去的也是student
2.addAll方法可以添加第二个ArrayList集合中所有Student元素//这里是对的,addall就是把一个集合中全部的元素添加到另一个集合中,集合装集合

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

回复 使用道具 举报
注意结贴。。。查看你们的帖子真的很耗时时间。。真心希望你们及时结贴。。真的很累。。
谢谢合作
回复 使用道具 举报
既然问题解决了,为什么不改成解决呢!!伤不起
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马