MyException - 我的异常网
当前位置:我的异常网» Java相关 » Java入门系列:范例讲解ArrayList用法

Java入门系列:范例讲解ArrayList用法

www.MyException.Cn  网友分享于:2013-09-17  浏览:0次
Java入门系列:实例讲解ArrayList用法

本文通过实例讲解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 import java.util.*;
 2 
 3 public class ArrayListExamples {
 4 
 5     public static void main(String args[]) {
 6         // 创建一个空的数组链表对象list,list用来存放String类型的数据
 7         ArrayList<String> list = new ArrayList<String>();
 8 
 9         // 增加元素到list对象中
10         list.add("Item1");
11         list.add("Item2");
12         list.add(2, "Item3"); // 此条语句将会把“Item3”字符串增加到list的第3个位置。
14         list.add("Item4");
15 
16         // 显示数组链表中的内容
17         System.out.println("The arraylist contains the following elements: "
18                 + list);
19 
20         // 检查元素的位置
21         int pos = list.indexOf("Item2");
22         System.out.println("The index of Item2 is: " + pos);
23 
24         // 检查数组链表是否为空
25         boolean check = list.isEmpty();
26         System.out.println("Checking if the arraylist is empty: " + check);
27 
28         // 获取链表的大小
29         int size = list.size();
30         System.out.println("The size of the list is: " + size);
31 
32         // 检查数组链表中是否包含某元素
33         boolean element = list.contains("Item5");
34         System.out
35                 .println("Checking if the arraylist contains the object Item5: "
36                         + element);
37 
38         // 获取指定位置上的元素
39         String item = list.get(0);
40         System.out.println("The item is the index 0 is: " + item);
41 
42         // 遍历arraylist中的元素
43 
44         // 第1种方法: 循环使用元素的索引和链表的大小
45         System.out
46                 .println("Retrieving items with loop using index and size list");
47         for (int i = 0; i < list.size(); i++) {
48             System.out.println("Index: " + i + " - Item: " + list.get(i));
49         }
50 
51         // 第2种方法:使用foreach循环
52         System.out.println("Retrieving items using foreach loop");
53         for (String str : list) {
54             System.out.println("Item is: " + str);
55         }
56 
57         // 第三种方法:使用迭代器
58         // hasNext(): 返回true表示链表链表中还有元素
59         // next(): 返回下一个元素
60         System.out.println("Retrieving items using iterator");
61         for (Iterator<String> it = list.iterator(); it.hasNext();) {
62             System.out.println("Item is: " + it.next());
63         }
64 
65         // 替换元素
66         list.set(1, "NewItem");
67         System.out.println("The arraylist after the replacement is: " + list);
68 
69         // 移除元素
70         // 移除第0个位置上的元素
71         list.remove(0);
72 
73         // 移除第一次找到的 "Item3"元素
74         list.remove("Item3");
75 
76         System.out.println("The final contents of the arraylist are: " + list);
77 
78         // 转换 ArrayList 为 Array
79         String[] simpleArray = list.toArray(new String[list.size()]);
80         System.out.println("The array created after the conversion of our arraylist is: "
81                         + Arrays.toString(simpleArray));
82     }
83 }

文章评论

旅行,写作,编程
旅行,写作,编程
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
如何成为一名黑客
如何成为一名黑客
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
Java程序员必看电影
Java程序员必看电影
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
我是如何打败拖延症的
我是如何打败拖延症的
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
10个调试和排错的小建议
10个调试和排错的小建议
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
我的丈夫是个程序员
我的丈夫是个程序员
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
程序员和编码员之间的区别
程序员和编码员之间的区别
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
老程序员的下场
老程序员的下场
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
鲜为人知的编程真相
鲜为人知的编程真相
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
代码女神横空出世
代码女神横空出世
中美印日四国程序员比较
中美印日四国程序员比较
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
一个程序员的时间管理
一个程序员的时间管理
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
每天工作4小时的程序员
每天工作4小时的程序员
漫画:程序员的工作
漫画:程序员的工作
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
那些争议最大的编程观点
那些争议最大的编程观点
 程序员的样子
程序员的样子
程序员必看的十大电影
程序员必看的十大电影
程序员应该关注的一些事儿
程序员应该关注的一些事儿
程序员的鄙视链
程序员的鄙视链
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有