java中ArrayList实例讲解

avatar 2017年04月02日21:27:25 3 3696 views
博主分享免费Java教学视频,B站账号:Java刘哥 ,长期提供技术问题解决、项目定制:本站商品点此
本文通过实例讲解Java中如何使用ArrayList类。

Java.util.ArrayList类是一个动态数组类型,也就是说,ArrayList对象既有数组的特征,也有链表的特征。可以随时从链表中添加或删除一个元素。ArrayList实现了List接口。

大家知道,数组是静态的,数组被初始化之后,数组长度就不能再改变了。ArrayList是可以动态改变大小的。那么,什么时候使用Array(数组),什么时候使用ArrayList?答案是:当我们不知道到底有多少个数据元素的时候,就可使用ArrayList;如果知道数据集合有多少个元素,就用数组。

1.ArrayList构造函数


ArrayList类支持3个构造方法。
  • Arraylist()


这个构造方法构造了一个空的链表。
  • ArrayList(Collection<? extends E> c)


这个构造方法构造了一个包含指定元素集合的链表,注意,这里的字符E是一个标记,用来表示集合中元素的类型。至于具体是什么类型,需要你在使用这个构造方法的时候来指定。
  • ArrayList(int initialCapacity)


这是第三个构造方法,构造了一个指定大小但内容为空的链表。initialCapacity参数就是初始容量大小。

举例来说,如果你要创建一个空的数组链表,用来存放String类型的对象,那么你可以像下面这样做:

ArrayList<String> list = new ArrayList<String>();

如果你需要创建一个指定初始容量的数组链表,你可以像下面这样做:

ArrayList<Integer> list = new ArrayList<Integer>(7);

注意:ArrayList类只支持对象类型,不支持 基础数据类型。就是说ArrayList对象只能存放对象,不能存放基础数据类型的数据。

2.ArrayList常用方法


下面是总结了一些比较常用的ArrayList类成员方法:
  • 增加元素到链表中
    • boolean add(Element e)
      增加指定元素到链表尾部.


    • void add(int index, Element e)
      增加指定元素到链表指定位置.




  • 从链表中删除元素
    • void clear()
      从链表中删除所有元素.


    • E remove(int index)
      删除链表中指定位置的元素.


    • protected void removeRange(int start, int end)
      删除链表中从某一个位置开始到某一个位置结束的元素。




  • 获取链表中的元素
    • E get(int index)
      获取链表中指定位置处的元素.


    • Object[] toArray()
      获取一个数组,数组中所有元素是链表中的元素.(即将链表转换为一个数组)




  • 修改某个元素
    • E set(int index, E element)
      将链表中指定位置上的元素替换成新元素。




  • 搜索元素
    • boolean contains(Object o)
      如果链表包含指定元素,返回true.


    • int indexOf(Object o)
      返回元素在链表中第一次出现的位置,如果返回-1,表示链表中没有这个元素。


    • int lastIndexOf(Object o)
      返回元素在链表中最后一次出现的位置,如果返回-1,表示链表中没有这个元素。




  • 检查链表是否为空
    • boolean isEmpty()
      返回true表示链表中没有任何元素.




  • 获取链表大小
    • int size()
      返回链表长度(链表包含元素的个数).




以上是ArrayList类中使用比较多的成员方法。每个方法的更详细的说明或其它没有提及到的方法,读者可以参考java官方api

3.ArrayList使用实例

  1. package com.liuyanzhao;
  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.Iterator;
  5. public class ArrayListDemo {
  6.     public static void main(String[] args) {
  7.         //1.创建一个空的数组链表对象,list用来存int类型数据
  8.         ArrayList<String> list = new ArrayList<String>();
  9.         list.add("刘䶮曌");
  10.         list.add("刘言曌");
  11.         list.add("liuyanzhao");
  12.         list.add(2,"Yanzh");
  13.         //显示链表内容
  14.         System.out.println(list);//[刘䶮曌, 刘言曌, Yanzh, liuyanzhao]
  15.         //2.检查元素位置
  16.         int pos = list.indexOf(3);
  17.         System.out.println(pos);//-1
  18.         //3.检查数组链表是否为空
  19.         boolean check = list.isEmpty();
  20.         System.out.println(check);//false
  21.         //4.获取链表大小
  22.         int size = list.size();
  23.         System.out.println(size);//4
  24.         //5.检查链表中是否包含某元素
  25.         boolean element = list.contains("刘言曌");
  26.         System.out.println(element);//true
  27.         //6.获取指定位置上的元素
  28.         String item = list.get(0);
  29.         System.out.println(item);//刘䶮曌
  30.         //7.遍历arraylist中的元素
  31.         //第一种方法:使用元素的索引来遍历,get()和size()
  32.         for(int i=0;i<list.size();i++) {
  33.             System.out.print(list.get(i)+" ");//刘䶮曌 刘言曌 Yanzh liuyanzhao 
  34.         }
  35.         System.out.println();
  36.         //第二种方法:使用foreach循环
  37.         for(String s:list) {
  38.             System.out.print(s+" ");//刘䶮曌 刘言曌 Yanzh liuyanzhao 
  39.         }
  40.         System.out.println();
  41.         //第三种方法:使用迭代器
  42.         //hasNext():表示链表中还有元素
  43.         //next():返回下一个元素
  44.         for(Iterator<String> it = list.iterator();it.hasNext();) {
  45.             System.out.printf(it.next()+" ");//刘䶮曌 刘言曌 Yanzh liuyanzhao 
  46.         }
  47.         System.out.println();
  48.         //8.替换元素
  49.         list.set(1"刘德华");
  50.         System.out.println(list);//[刘䶮曌, 刘德华, Yanzh, liuyanzhao]
  51.         //9.移除指定位置的元素
  52.         list.remove(1);
  53.         System.out.println(list);//[刘䶮曌, Yanzh, liuyanzhao]
  54.         //10.移除首次出现的某元素
  55.         list.remove("Yanzh");
  56.         System.out.println(list); //[刘䶮曌, liuyanzhao]
  57.         //11.转换ArrayList为Array
  58.         String arr[] = list.toArray(new String[list.size()]);
  59.         System.out.println(Arrays.toString(arr));//[刘䶮曌, liuyanzhao]
  60.         //12.移除所有元素
  61.         list.clear();//移除所有元素
  62.         System.out.println(list);//[]
  63.     }
  64. }

本文地址:http://liuyanzhao.com/2869.html

转载请注明

  • 微信
  • 交流学习,服务定制
  • weinxin
  • 个人淘宝
  • 店铺名:言曌博客咨询部

  • (部分商品未及时上架淘宝)
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:1   待审核评论数:0
  1. avatar 明月学习笔记Blog

    我突然发现鸟哥的begin主题不是很适合技术代码类的文章!

    • avatar 言曌

      还可以啦,能用就不错啦。