自定义一个MyArrayList方法---------实现部分方法

/**
* 自己设计一个ArrayList类,包含方法主要有add()、set()、get()、size()、clear()、remove()------未使用泛型
* @author yunfei
*/
import java.util.Arrays;
import java.util.ArrayList;

class MyArrayList {
  private Object[] arr = new Object[10];   // 定义一个对象数组,初始长度为10
  private int index = 0;   
  //添加对象
  public boolean add(Object o) {
    if (index >= arr.length) {
    //拷贝原数组的内容,并重新设置数组长度
    arr = Arrays.copyOf(arr, arr.length + (arr.length + 1) / 2);  
    }
    arr[index]=o;
    if(arr[index]!=null){
      index++;    //表示添加成功,index需要迭代
      return true;
    }
      return false;
    }
  //替换元素
  public Object set(int index,Object element){
    if(index>=this.index||index<0){
      throw new RuntimeException("数组下标越界");
    }
    Object o=arr[index];
    arr[index]=element;
    return o;
    }
  //查询
  public Object get(int index){
    if(index>=this.index||index<0){
      throw new RuntimeException("数组下标越界");
    }
    Object o=arr[index];
    return o;
  }
  //元素个数
  public int size(){
    return index;
  }
  //清空
  public void clear(){
    index=0;
    arr=new Object[10]; //清空后,初始化数组长度
  }
  //移除元素
  public Object remove(int index){
    if(index>=this.index||index<0){
      throw new RuntimeException("数组下标越界");
    }
    Object o=arr[index];
    for(int i=index;i<this.index-1;i++){
      arr[i]=arr[i+1]; //从index位置开始,所有元素往前移一次(若index=this.index-1,不进入循环)
    }
    this.index--; //数组长度-1(若index=this.index-1,自动移除最后一个元素)
    return o;
  }
}

//测试类

public class TestMyArrayList{
  public static void main(String[] args) {
    ArrayList al=new ArrayList();
    al.add("java01");
    al.add("java02");
    al.add("java03");
    al.add(15); //自动装箱----->new Integer(15)
    al.set(3, "java04"); //下标为3的位置的元素替换为"java04"
    System.out.println(al);
    //查询------遍历集合
    for(Object o:al){
      System.out.println(o);
    }
    //获得集合中的元素个数
    System.out.println("集合中的元素个数:"+al.size());
    //移除元素
    al.remove(1);
    System.out.println(al);
    //清空
    al.clear();
    System.out.println("清空后集合中的元素个数:"+al.size());
    System.out.println("清空后集合中的元素:"+al);
  }
}

时间: 2024-10-23 15:29:12

自定义一个MyArrayList方法---------实现部分方法的相关文章

jQuery Validate 表单验证插件----自定义一个验证方法

一.下载依赖包 网盘下载:https://yunpan.cn/cryvgGGAQ3DSW  访问密码 f224 二.引入依赖包 <script src="../../scripts/jquery-1.3.1.js" type="text/javascript"></script> <script src="lib/jquery.validate.js" type="text/javascript"

Spring自定义一个拦截器类SomeInterceptor,实现HandlerInterceptor接口及其方法的实例

利用Spring的拦截器可以在处理器Controller方法执行前和后增加逻辑代码,了解拦截器中preHandle.postHandle和afterCompletion方法执行时机. 自定义一个拦截器类SomeInterceptor,实现HandlerInterceptor接口及其方法. 然后在spring-mvc.xml中添加拦截器配置,来指定拦截哪些请求. 步骤一: 创建SomeInterceptor拦截器组件 新建一个com.souvc.interceptor包,在该包中新建一个SomeI

黑马程序员——java——自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序

自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序 import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; //自定义一个比较器 class Mycompare implements Comparator { @Override public int compare(Object o1, Object o2) { // TODO Auto-generated method s

黑马程序员——java——自定义一个比较器,按照字符串的长度升序的方法来比较字符串进行储存

自定义一个比较器,按照字符串的长度升序的方法来比较字符串进行储存 import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; class Mycompara implements Comparator { //自定义一个比较器,按照字符串的长度来比较字符串,然后对其进行储存 //如果字符串的长度一样长了后,再依据字符内容进行排序 public int compare(Object o1, Ob

【转】带checkbox的ListView实现(二)——自定义Checkable控件的实现方法

原文网址:http://blog.csdn.net/harvic880925/article/details/40475367 前言:前一篇文章给大家展示了传统的Listview的写法,但有的时候我们并不想在DataHolder类中加一个标识是否选中的checked的成员变量,因为在项目开发中,大部分的ListItemLayout布局都是大家共用的,有些人根本不需要checkbox控件,所以会在初始化的时候把这个控件给隐藏掉,但我们的DataHolder在构造的时候以及ListItemAdapt

Flex4 DataGrid实现可复制单元格,同时解决自定义GridItemRenderer出现1009错误的方法

原创内容,如需转载,请注明出处,谢谢 最近在项目中发现Flex的DataGrid不支持内容复制,在涉及到保护敏感数据时倒是很有用处,但大部分情况下,我们还是希望客户能够直接复制DataGrid单元格中的内容进行快速操作,这个与用户体验背道而驰的问题一定要解决,因此想到直接自定义DataGrid的项呈现器来实现. 呆毛如下: 本来以为可以非常顺利,哪知居然给我碰到了一个BUG,网上查了查,也有不少童鞋们碰到了这个问题,不过似乎都没有有效的解决方案,这个主要是思维固化了,总认为官方的就一定是正确的.

android Listview 与 Scrollview 共存的一个较优良的解决方法

最近因为一个项目需要在Scrollview里面嵌套一个Listview,如果只是用android提供的ListView是什么效果大家肯定都已经知道了,经过摸索,自己找到了一个还算可以的解决方法,如下所示: 首先时自定义一个MyListview继承Listview ,重写他的onMeasure方法 ,让它不能滚动,代码如下: 基本这样就解决了它俩共存的问题,但是新问题来了,每次加载时,都是MyListview优先显示(而且好像是从MyListview底部向上开始显示的,因为我的测试数据太少,可能说

Django 自定义 Admin change page 的一般方法

定制的代码通常写在 app/admin.py 中的一个名为 ModelAdmin 的类里,主要以属性和方法的形式.或者更进一步说,代码大都存在于该类的 change_view(self, request, object_id, extra_context=None) 方法 或 save_model(self, request, obj, form, change) 方法中,这也就是下面示例代码在修改属性时都会使用一个 self.xxx = 'xxx' 语句的原因. 类名中的 Model 指的是

Android 自定义View需要重写ondraw()等方法

Android  自定义View需要重写ondraw()等方法,这篇博客给大家说说自定义View的写法,需要我们继承View,然后重写一些 方法,方法多多,看你需要什么方法 首先写一个自定义的View 继承View package com.example.engineerjspview; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import and