1-自己动手编写ArrayList集合

学习集合的原理,这是一个很简单的代码,没有索引下标越界判断,异常处理等,不够健壮,后面会继续更新完善代码.....

只是入门学习一下

package my;

/***
 * 自己动手编写一个ArrayList类
 * @author 刘诗华
 *
 */
public class ArrayList {

    //集合默认初始化长度为10个元素
    private final static int DEFAULT_CAPACITY = 10;

    //当前集合中存储了多少个元素
    private int size=0;

    //存储对象容器
    private Object[] ele=null;

    //无参数构造器
    public ArrayList()
    {
        this(DEFAULT_CAPACITY);
    }
    //带参数构造器
    public ArrayList(int initialCapacity)
    {
        ele=new Object[initialCapacity];
    }

    //添加元素
    public void add(Object e)
    {
        ele[size]=e;
        size++;
    }

    //获取指定索引元素
    public Object get(int index)
    {
        return ele[index];
    }

    //获取元素第一次在集合出现的索引位置
    public int indexOf(Object o)
    {
        for(int index=0;index<size;index++)
        {
            if(o.equals(ele[index]))
                return index;
        }
        return -1;
    }

    //查询元素最后一次出现的索引
    public int lastIndexOf(Object o)
    {
        int len=size-1;
        for(int index=len;index!=-1;index--)
        {
            if(o.equals(ele[index]))
                return index;
        }
        return -1;
    }

    //替换元素
    public void set(int index, Object element)
    {
        ele[index]=element;
    }

    //返回集合存储元素长度
    public int size()
    {
        return this.size;
    }

    //判断是否为空集合
    public boolean isEmpty()
    {
        return size == 0;
    }

    //清空集合所有元素
    public void clear()
    {
        ele=new Object[DEFAULT_CAPACITY];
        size=0;
    }

    //判断集合是否包含某个元素
    public boolean contains(Object o)
    {
        int len=size-1;
        for(int index=len;index != -1; index--)
        {
            if(o.equals(ele[index]))
                return true;
        }
        return false;
    }

    //删除某个元素
    public void remove(Object o)
    {
        int index=this.indexOf(o);

        for(int i=index;index<=size-1;index++)
        {
            ele[index]=ele[index+1];
            ele[index+1]=null;
            size--;
        }
    }

    //删除指定索引位置的元素
    public void remove(int index)
    {
        for(int i=index;index<=size-1;index++)
        {
            ele[index]=ele[index+1];
            ele[index+1]=null;
            size--;
        }
    }

    @Override
    public String toString() {

        if(ele == null)
            return "null";

        if(size ==0)
            return "[]";

        StringBuilder sb=new StringBuilder();
        sb.append("[");
        for(int index=0;index<size;index++)
        {
            sb.append(ele[index]);
            if(index != size-1)
                sb.append(",");
        }
        sb.append("]");
        return sb.toString();
    }

}

原文地址:https://www.cnblogs.com/hua900822/p/9757934.html

时间: 2024-10-07 17:54:21

1-自己动手编写ArrayList集合的相关文章

ArrayList集合--关于System.out.print(Object obj);的理解

1.ArrayList集合中常用的方法 ArrayList<Student> stuArrayList = new ArrayList<>(); //定义一个集合对象 stuArrayList.add():    //添加元素 stuArrayList.add(index, e):    //在某个位置添加元素,但不覆盖原元素 stuArrayList.get(index):    //获取某位置的元素 stuArrayList.size():    //获取集合长度 stuArr

ArrayList集合

集合只可以存取引用数据类型,集合的长度可以改变, 基本数据类型对应的引用数据类型 int          Integer double     Double char        Character 定义格式:ArrayList<集合内元素类型> 变量 = new ArrayList<集合内元素类型>(); 方法:变量.add(元素)    增加元素 变量.remove(索引)   删除指定索引的元素 变量.set(索引,元素)  为指定的索引修改元素 变量.get(索引)  

ArrayList集合的语句示例

namespace ArrayList集合的语句示例{    class Program    {        static void Main(string[] args)        {            //一:Stack集合(没有索引)   先进后出,一个一个赋值,一个一个取值,按顺序            //Stack ss = new Stack();            //ss.Push("1");            //ss.Push("2&

ArrayList集合深入学习

ArrayList集合 创建ArrayList ArrayList类集成了AbstractList类 ArrayList中有两个构造方法(方法名相同,方法参数不同叫做重载),默认构造方法通过调用ArrayList(int)来事项ArrayList的创建,传入的值为10 ? ? 因为ArrayList类继承了AbstractList类,其中super调用了父类的默认构造方法,父类的该方法为一个空的方法(只有方法的声明,没有方法的实现),因此这段代码中最关键的是实例化了一个Object的数组,并将此

HashMap集合与ArrayList集合的遍历

ArrayList集合的遍历: HashMap集合的遍历: 随笔说: 在使用迭代器迭代集合的过程中,不能对集合进行增删操作.ArrayList允许重复存放元素, HashMap不支持重复存放元素.

C#语言基础——集合(ArrayList集合)

集合及特殊集合 集合的基本信息: System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表.队列.位数组.哈希表和字典)的集合.System.Collections.Generic 命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能.ystem.Collections.Specialized 命名空间包含专用的和强类型的集合,例如,链接的列表词典.位向量以及只包含字符串的集合. 常用的集合为Ar

C#的ArrayList集合的使用

集合类是一种将各相同类型的对象集合起来的类,数组实质上也是集合类型中的一种. 集合主要是以线性结构存储结构 C#提供ArrayList类.Queue类.Stack类 1.ArrayList类简介: ArrayList类可以动态地添加和删除元素. ArrayList类相当于一种高级的动态数组,是Array类的升级版本,但它并不等同于数组. 2.与数组的比较: (1)数组的容量是固定的,而ArrayList的容量可以根据需要自动扩充 (2)ArrayList提供添加,删除,插入某一范围元素的方法,但

Java基础知识强化之集合框架笔记27:ArrayList集合练习之去除ArrayList集合中的重复字符串元素

1. 去除ArrayList集合中的重复字符串元素(字符串内容相同) 分析: (1)创建集合对象 (2)添加多个字符串元素(包含重复的) (3)创建新的集合 (4)遍历旧集合,获取得到每一个元素 (5)拿着个元素到新集合中去找,看有没有   有:不搭理它 没有:添加到新集合      (6)遍历新集合 2. 案例代码: 1 package cn.itcast_04; 2 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 6

ArrayList集合&amp;特殊集合

一.ArrayList集合 集合内可以放不同类型的元素 另:object类型为所有数据类型的基类 添加元素:.add(); 清空集合:al.clear(); 克隆集合:.clone(); 判断是否包含某个元素:.contains(); 获取第一次出现该元素的索引号:.indexof(); 获取最后一次出现该元素的索引号:lastindexof(); 移除第一个匹配元素:.Remove(); 移除某个索引位置上的元素:.RemoveAt(); 排序 升序:.sort(); 翻转集合:.Revers