持有对象

1、通过使用泛型可以在编译期防止将错误类型的对象放到容器中

例子:ArrayList<A> list=new ArrayList<A>();

          list.add(new B());//   编译出错

          向上转型也可用于泛型,如果一个类是A类的子类,则可放入A的容器中,

          class  C  extends A 

          list.add(new C());//编译通过

2、迭代器

  迭代器是一个对象,java的iterator只能单向移动。工作方式:

1)使用方法iterator()要求容器返回一个Iterator对象。

2)使用next()获取序列的下一个元素

3)使用hasNext()检查序列中是否还有元素

4)使用remove()将迭代器新近返回的元素删除

 

如何给一个类创建迭代器的能力,两种方法

1)在类里面创建一个iterator()方法

//测试类

public class Test {



    public static void main(String[] args) {
        Apple a=new Apple();
        Iterator<String>iterator=a.iterator();
        while (iterator.hasNext())
        {
            String s=iterator.next();
            System.out.println(s);
        }


    }


}

   class Apple {
    String[] s=new String[]{"aaa","anbk","dktg","idgi"};
//在类里面创建一个iterator()方法
       public Iterator<String> iterator()
       {
           return new Iterator<String>() {
               int index=0;
               @Override
               public boolean hasNext() {
                   return index<s.length;
               }

               @Override
               public String next() {
                   return s[index++];
               }
           };
       }

   }

2) 让类实现iterable接口

 

3、两种基本类型的List

ArrayList和LinkedList

ArrayList的底层实现是动态数组,适合随机访问元素,不适合插入和删除元素

LinkedList的底层实现是双向链表,适合插入删除元素,不适合随机访问。由于linkedlist底层的双向链表的特性,

可将linkedlist直接作为stack和队列来使用。

如:Stack<Integer> s=new LinkedList<Integer> ();//利用向上转型 把linkedlist作为栈使用

       Quene<Integere> q=new LinkedList<Integer>();      //利用向上转型 把linkedlist作为队列使用

        

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值