对ArrayList源码的学习

一.对泛型的了解

1.泛型:是一种特殊的类型,是一种创建对象或调用方法时才明确数据类型的特殊类型。参数化类型,把类型当参数一样传递

2.泛型优点
A:把运行期间的问题提前到了编译期间
B:避免了强制类型转换

3.泛型有三种使用方式,分别为:泛型类、泛型接口、泛型方法

package FanXing;

import java.util.ArrayList;

import java.util.Iterator;

public class FanXingTest555{

    public static void main(String[] args) {
        ArrayList<Student> array =new ArrayList<Student>();

        Student s1=new Student("精",16);
        Student s2=new Student("神",17);
        Student s3=new Student("小",18);
        Student s4=new Student("伙",19);
         //添加元素
        array.add(s1);
        array.add(s2);
        array.add(s3);
        array.add(s4);

        Iterator it= array.iterator(); //迭代器
        while(it.hasNext()){
            Student s= (Student) it.next(); //向下转型
            System.out.println(s.getage()+"  "+s.getName());
        }

       /* Iterator<Student> it = array.iterator(); //或者直接明确类型
        while (it.hasNext()) {
            Student s = it.next();
            System.out.println(s.getage() + "  " + s.getName());
        }*/

        for(int x=0;x<array.size();x++){
            Student s= (Student) it.next(); //向下转型
            System.out.println(s.getage()+"  "+s.getName());
        }
    }


}

结果是:

16171819

二.对迭代器的理解

1.迭代器是一种遍历集合的方式,依赖集合而存在。

2.迭代器是一个接口,以在具体类中,以内部类的形式体现。

3.通过集合获取迭代器对象:Iterator it=c.iterator()(c是集合对象)

4.迭代器的常用方法:next()、hasNext()

5.集合使用步骤:

   A:创建集合对象
   B: 添加元素对象
   C. 把元素添加到集合
   D. 通过迭代器使用hasNext()判断是否有元素,next()方法获取元素并移动到下一位置

三.集合源码toString()源码的解析

代码:
Collection c=new ArrayList();
c.add("hello");
c.add("world");
C.add("java");
//源码如下:
   public String toString() {
        Iterator<E> it = iterator();//集合本身调用迭代器,得到集合迭代器
        if (! it.hasNext())
            return "[]";

        StringBuilder sb = new StringBuilder();
        sb.append('[');
        for (;;) {
            E e = it.next(); //e=hello,world,java
            sb.append(e == this ? "(this Collection)" : e) ;//相当于sb(e)
            if (! it.hasNext())
                return sb.append(']').toString();
            sb.append(',').append(' ');
        }
    }

1.ArrayList中无toString(),但其父类AbstractCollection有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值