Java集合ArrayList实现类的总结

Java ArrayList总结

 

ArrayList也是我们集合中最最重要的一个实现类,也是我们必须要掌握的集合类。本文将对ArrayList做比较全面的总结,

一个是从概念上理解,第二个是ArrayList的使用,这里使用ArrayList基本上是结合泛型来讲解使用,因为实际运用也是结合泛型使用的。

 

一.ArrayList是什么?

  根据MSDN文档介绍,ArrayList是动态数组,是Array的子类,也是List接口的实现类。具有数组特点,也有自身的特点。

(一)ArrayList可以动态改变大小,动态增,删元素

(二)实现了Collection和List接口,可以使用其中的方法

 

 

二.ArrayList常用的使用方法

(一)public intsize();

返回此列表中的元素数。

(二)  public boolean isEmpty();

如果此列表中没有元素,则返回 true

(三)public boolean contains(Object o);

如果此列表中包含指定的元素,则返回 true

(四)public int indexOf(Object o)

返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1

(五)public int lastIndexOf(Object o)

返回此列表中最后一次出现的指定元素的索引,或如果此列表不包含索引,则返回 -1

(六)public Object[] toArray();

按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。 

(七)public E get(int index);

返回此列表中指定位置上的元素

(八)public E set(int index, E element);

 用指定的元素替代此列表中指定位置上的元素。返回值为以前位于该指定位置上的元素

(九)public boolean add(E element);

 将指定的元素添加到此列表的尾部。添加成功返回true

(十)public void add(int index, E element)

 将指定的元素插入此列表中的指定位置。向右移动当前位于该位置的元素(如果有)以及所有后续元素(将其索引加 1)。

(十一)public E remove(int index)

 移除此列表中指定位置的元素,返回从列表中移除的元素

(十二)public boolean remove(Object o)

 移除此列表中首次出现的指定元素(如果存在)。如果列表不包含此元素,则列表不做改动。

(十三)public void clear()

移除此列表中的所有元素。此调用返回后,列表将为空

(十四)public boolean addAll(Collection c)

按照指定collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部

(十五)publicboolean addAll(int index, Collection c)

 从指定的位置开始,将指定 collection中的所有元素插入到此列表中。

 

 

三.ArrayList增删改查基本操作

示例一


package com.xykj.arraylist;
import java.util.ArrayList;
import java.util.Iterator;
public class MainClass {
    /**
     * ArrayList增删改查的操作
     * */
    public static void main(String[] args) {
       //实例化ArrayList,泛型是基本类型String,添加的数据只能是String,否者报错
       ArrayList
   
   
    
    list=new ArrayList<>();
      
       //添加操作
       list.add("123");
       //list.add(12);//会报错
       list.add("小明");
       list.add("meizi");
       list.add("shuaige");
      
       //删除操作
       list.remove(1);//以游标的方式,删除第二个数据“小明”
       list.remove("meizi");//以实际集合的内容,删除第三个数据“meizi”
      
       //数据修改
       list.set(0, "222");//把第一个元素的内容改为“222”了
      
       //显示集合内的数据
       //集合剩下“222”、“shuaige”这两页元素了
      
       //显示方法1:
       //System.out.println(list);//最简单的显示方法
      
       //显示方法2:
       /*for (int i = 0; i 
    
    
     
      iterator=list.iterator();
       while (iterator.hasNext()) {
           System.out.println(iterator.next());
       }
    }
 
}
    
    
   
   


显示结果:

 



对于示例1的简单说明:

示例1对ArrayList进行了增删改查的基本操作,其中添加和修改的方法基本是固定的,但是删除和查找的方法是比较多,本示例列举了所有的显示List方法,

其中第二个方法是java基础时经常用的,

第三个方法是一个特殊的for结构,叫foreach语句,这个语句没有显式的游标值,但是能遍历后面集合(数组)的所有元素,

第四个方法是java集合专门使用的方法,需要迭代器Iterator接口的使用,后面要加泛型(要接收的数据类型),使用hasNext方法判断下一个游标位置是否存在元素,再用next方法获取集合的元素。

值得说一下的是,删除很多个集合元素时,基本是用迭代器Iterator接口的remove方法来删除元素,其他办法都有可能导致程序崩溃。

 

 

 

示例二

本示例使用自定义的数据类型作为泛型,同样是增删改查的操作实现,但是重点是删除操作。

1.先建一个自定义数据类User


package com.xykj.arraylist2;
public class User {
    //为一个用户定义三个基本属性
    String name="";
    String sex="";
    int age=0;
   
    //利用构造方法传递参数 
    public User(Stringname, Stringsex,intage) {
       super();
       this.name =name;
       this.sex =sex;
       this.age =age;
    }
   
    //各个参数的get和set方法
    public String getName() {
       returnname;
    }
    public void setName(String name) {
       this.name =name;
    }
    public String getSex() {
       returnsex;
    }
    public void setSex(String sex) {
       this.sex =sex;
    }
    public int getAge() {
       returnage;
    }
    public void setAge(intage) {
       this.age =age;
    }
   
     
}
 

 

2.再建主方法调用类

 


packagecom.xykj.arraylist2;
 
importjava.util.ArrayList;
importjava.util.Iterator;
 
publicclass MainClass {
    /**
     * 本示例对泛型是自定义类的情况做增删改查
     *
     * */
    public static void main(String[] args) {
 
       // 这里存入集合的不是基本数据类型了,而是上面创建的User类的对象了
       ArrayList
   
   
    
     list = newArrayList<>();
 
       // 添加User类的对象10个
       for (int i = 0; i < 10; i++) {
           list.add(new User("name" +i, "女", 10 + i));
       }
 
       // 删除前面的五个User的对象
 
       /*使用for循环删除
        *for (int i = 0; i < 5; i++) { //虽然程序没有崩掉,但是得到的结果不对
        *list.remove(i); }//得到结果:剩下name1、name3、name5、name7、name9
        */
      
       // 使用迭代器Iterator删除
       Iterator
    
    
     
      iterator =list.iterator();
       int num = 0;
       while (iterator.hasNext()) {
           iterator.next();//游标指向下一个,这个很重要,没有就报错
           iterator.remove();
           num++;
           if (num == 5) { // 删除前面0到4个,马上退出循环
              break;
           }
       }
      
       //创建一个User对象
       User meizi=new User("meizi","女",18);
       //改变集合里面第一个元素的值
       list.set(0, meizi);
      
       //显示集合里面的元素的具体属性
       // System.out.println(list);//直接打印出现的是类名和地址,不是我们想要的结果
       for (User user : list) {
           System.out.println(user.getName()+"\t"+user.getSex()+"\t"+user.getAge());
       }
 
    }
 
}
    
    
   
   

 

运行结果:

 



示例2的简单说明:

   本示例主要是泛型的扩展使用,这个在以后数据存储也是很常用的。

   还有一个就是list列表的删除多个元素的方法,迭代器Iterator接口类的使用,这个也是重点要掌握的知识。

 

从上面两个例子,可以看到ArrayList在实际的应用的具体代码,要熟练掌握这两种存储方式。相关知识的储备也是要的。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峥嵘life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值