java利用AbstractCollection实现自己的可迭代集合类

简介: Colllection是  java.uitl包中所有集合类的一个根接口..  所以我们可以通过实现Collection接口来实现自己的集合类.. 不过由于Collection接口 方法太多.. 于是JDK提供了AbstractCollection抽象类... 这个类是Collection的一个骨干..即为我们提供了Collection的大量实现..我们只需要实现  iterator 和size方法 ...如果我们想要修改自己创建的容器那么要实现add和remove方法否则 。

Colllection是  java.uitl包中所有集合类的一个根接口..  所以我们可以通过实现Collection接口来实现自己的集合类..

不过由于Collection接口 方法太多.. 于是JDK提供了AbstractCollection抽象类...

这个类是Collection的一个骨干..即为我们提供了Collection的大量实现..我们只需要实现  iterator 和size方法 ...如果我们想要修改自己创建的容器那么要实现add和remove方法否则 。。

进行修改操作会抛出UnSupporttedException异常   下面是一个例子 ...

在生成迭代器的时候结合局部内部类使用

 

package me;
import java.util.AbstractCollection;
import java.util.Iterator;
class Info{
 String info=null ;
 public Info(String name) {
     this.info=name ;
 }
 @Override
 public String toString() {
  return this.getClass().getName()+": "+info;
 }

class  MyCollection extends  AbstractCollection<Info>{ 
 private Info []arr =new Info[100];
 private int count= 0; 
 public  boolean add(Info info){
  if(count<=arr.length){
      arr[count++]=info ;
   return true ;
  }
  return false; 
 }@Override
 public boolean equals(Object obj) {
  // TODO Auto-generated method stub
  return super.equals(obj);
 }
 @Override
 public Iterator<Info> iterator() {

  return new Iterator<Info>() {
           
   private int flag=0 ;
   @Override
   public boolean hasNext() {
    
    return flag<MyCollection.this.count ;
   }
   @Override
   public Info next() {
    
    return arr[flag++];
   }
   @Override
   public void remove() {   //支持删除操作
          throw new  UnsupportedOperationException() ;     
   }
  };
 }
 @Override
 public int size() {
  return 0;
 }

public class Me   {  
 public static void main(String []agrs){ 
  MyCollection me=new MyCollection() ;
  me.add(new Info("zhangsan ")) ;
  me.add(new Info("lisi ")) ;
  me.add(new Info("zwangwu ")) ;
  me.add(new Info("zmaliu ")) ;
  for(Info i:me){
   System.out.println(i);
  }

 }

}

目录
相关文章
|
6月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
348 100
|
6月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
356 101
|
6月前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
349 101
|
6月前
|
安全 Java 开发者
Java记录类:简化数据载体的新方式
Java记录类:简化数据载体的新方式
337 100
|
6月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
5月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
231 4
|
5月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
296 5
|
5月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
162 7
|
5月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
371 5
|
5月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
284 1