写在前面的话:读书破万卷,编码如有神
--------------------------------------------------------------------
下文主要对java.util.ArrayList<E>的6个常用查询操作进行介绍,主要内容包括:

1、ArrayList查询操作

参考内容:

1、JDK源码(1.7)

-------------------------------------------------------------------- 

1. ArrayList常用的6个查询操作

查询操作:

(1) boolean contains(Object o)

功能: 判断列表中是否有包含了元素o

示例代码:

 public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(0,44);
list.add(1,33);
list.add(2,22);
list.add(1,66);
list.add(4,99);
System.out.println("list :" + list);
//测试ArrayList的boolean contains(Object o)方法的使用
System.out.println("列表中是否包含了元素22 :"+list.contains(22));
System.out.println("列表中是否包含了元素34 :"+list.contains(34));
System.out.println("列表中是否包含了元素66 :"+list.contains(66));
}
} 运行结果:
list :[44, 66, 33, 22, 99]
列表中是否包含了元素22 :true
列表中是否包含了元素34 :false
列表中是否包含了元素66 :true

源代码如下:

 public boolean contains(Object o) {
//内部是通过调用indexOf(Object o) 方法来实现的
return indexOf(o) >= 0;
}

(2) E get(int index)

功能: 返回列表index位置上的元素

示例代码:

 public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(0,44);
list.add(1,33);
list.add(2,22);
list.add(1,66);
list.add(4,99);
System.out.println("list :" + list);
//测试ArrayList的E get(int index)方法的使用
System.out.println("返回列表中下标索引为1的元素 :"+list.get(1));
System.out.println("返回列表中下标索引为4的元素 :"+list.get(4));
System.out.println("返回列表中下标索引为9的元素 :"+list.get(9));
}
} 运行结果:
list :[44, 66, 33, 22, 99]
返回列表中下标索引为1的元素 :66
返回列表中下标索引为4的元素 :99
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 9, Size: 5
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at ArrayListTest.main(ArrayListTest.java:16)

源代码如下: 查看源码可以发现java.util.ArrayList<E>根据索引下标来获取元素的速度非常快。

 public E get(int index) {
//检查index是否合法
rangeCheck(index);
//内部调用elementData(int index)方法
return elementData(index);
} @SuppressWarnings("unchecked")
E elementData(int index) {
return (E) elementData[index];
}

(3) int indexOf(Object o)

功能: 返回元素o在列表中的索引位置

示例代码:

 public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(0,44);
list.add(1,33);
list.add(2,22);
list.add(1,66);
list.add(4,99);
System.out.println("list :" + list);
//测试ArrayList的'int indexOf(Object o)'方法的使用
System.out.println("返回列表中元素为22的索引下标 :"+list.indexOf(22));
System.out.println("返回列表中元素为66的索引下标 :"+list.indexOf(66));
System.out.println("返回列表中元素为41的索引下标 :"+list.indexOf(41));
}
} 运行结果:
list :[44, 66, 33, 22, 99]
返回列表中元素为22的索引下标 :3
返回列表中元素为66的索引下标 :1
返回列表中元素为41的索引下标 :-1

源代码如下:

     public int indexOf(Object o) {
if (o == null) {
//元素o为null,循环列表中的元素查找
for (int i = 0; i < size; i++)
if (elementData[i]==null)
return i;
} else {
//元素o不为null,循环列表中的元素查找
for (int i = 0; i < size; i++)
if (o.equals(elementData[i]))
return i;
}
return -1;
}

(4) boolean isEmpty()

功能: 判断列表是否为空,如果为空,返回true;如果不为空,返回false.

示例代码:

 public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(0,44);
list.add(1,33);
list.add(2,22);
list.add(1,66);
list.add(4,99);
System.out.println("list :" + list);
//测试ArrayList的' boolean isEmpty()'方法的使用
System.out.println("ArrayList列表是否为空: " + list.isEmpty());
}
} 运行结果:
list :[44, 66, 33, 22, 99]
ArrayList列表是否为空: false

源代码如下:

     public boolean isEmpty() {
return size == 0;
}

(5) int lastIndexOf(Object o)

功能: 查询元素o在列表中的索引位置(倒序查找)

示例代码:

 public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(0,44);
list.add(1,33);
list.add(2,22);
list.add(1,66);
list.add(4,99);
list.add(2,66);
list.add(1,44);
System.out.println("list :" + list);
//测试ArrayList的'int lastIndexOf(Object o)'方法的使用
System.out.println("ArrayList列表中元素33最后一次出现的索引位置: " + list.lastIndexOf(33));
System.out.println("ArrayList列表中元素66最后一次出现的索引位置: " + list.lastIndexOf(66));
System.out.println("ArrayList列表中元素55最后一次出现的索引位置: " + list.lastIndexOf(55));
}
} 运行结果:
list :[44, 44, 66, 66, 33, 22, 99]
ArrayList列表中元素33最后一次出现的索引位置: 4
ArrayList列表中元素66最后一次出现的索引位置: 3
ArrayList列表中元素55最后一次出现的索引位置: -1

源代码如下:

 public int lastIndexOf(Object o) {
if (o == null) {
//元素o为null,利用循环倒序查找null元素
for (int i = size-1; i >= 0; i--)
if (elementData[i]==null)
return i;
} else {
//元素o不为null,利用循环倒序查找o元素
for (int i = size-1; i >= 0; i--)
if (o.equals(elementData[i]))
return i;
}
return -1;
}

(6) int size()

功能: 返回列表中元素的个数

示例代码:

 public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(0,44);
list.add(1,33);
list.add(2,22);
list.add(1,66);
list.add(4,99);
list.add(2,66);
list.add(1,44);
System.out.println("list :" + list);
//测试ArrayList的'int size()'方法的使用
System.out.println("ArrayList列表的size为: " + list.size());
}
} list :[44, 44, 66, 66, 33, 22, 99]
ArrayList列表的size为: 7

源代码如下:

     public int size() {
return size;
}

--------------------------------------------------------------------------

java.util.ArrayList系列文章

java.util.ArrayList<E>(1)  java.util.ArrayList<E>(2)  java.util.ArrayList<E>(3)

java.util.ArrayList<E>(4)  java.util.ArrayList<E>(5)  java.util.ArrayList<E>(6)

相关知识                                                                                            

java.util.Collection<E>   java.util.AbstractCollection<E>   java.util.List<E>

java.util.AbstractList<E>   java.util.Iterator<E>   java.util.ListIterator<E>

Java中的标记接口   迭代器模式   Java中的深拷贝和浅拷贝  java.util.Arrays

内功心法 -- java.util.ArrayList<E> (3)的更多相关文章

  1. 内功心法 -- java.util.ArrayList<E> (1)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  2. 内功心法 -- java.util.ArrayList<E> (2)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  3. 内功心法 -- java.util.ArrayList<E> (4)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  4. 内功心法 -- java.util.ArrayList<E> (5)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  5. 内功心法 -- java.util.ArrayList<E> (6)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  6. 解决springmvc报No converter found for return value of type: class java.util.ArrayList问题

    一.背景 最近闲来无事,想自己搭建一套Spring+SpringMVC+Mybatis+Mysql的环境(搭建步骤会在以后博客中给出),结果运行程序时,适用@ResponseBody注解进行返回Lis ...

  7. Java.util.ArrayList详解

    java.util.ArrayList就是传说中的动态数组. 继承了关系,有此可看出ArrayList与list的collection的关系 public class ArrayList<E&g ...

  8. java@ 利用ArrayList实现dijkstra算法以及topological 排序算法(java.util.ArrayList)

    package dataStructure; import java.util.ArrayList; import java.util.LinkedList; import java.util.Que ...

  9. java.util.ArrayList、java.util.vector和java.util.LinkedList (JDK 1.8.0_111)

    一.java.util.ArrayList 1.1 ArrayList 继承结构 ArrayList实现了RandomAccess,可以随机访问(其实就是通过数组下标访问):实现了Cloneable, ...

随机推荐

  1. iOS之SDWebImage清理缓存

    .找到 SDWebImage找到SDImageCache类 添加如下方法 - (float)checkTmpSize { float totalSize = 0; NSDirectoryEnumera ...

  2. Linux如何正确关机

    其实,在Linux领域内大多用在服务器上,很少遇到关机的操作.毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机. Linux和windows不同,在 Linux 底下,由于每个程序( ...

  3. (简单) POJ 2750 Potted Flower,环+线段树。

    Description The little cat takes over the management of a new park. There is a large circular statue ...

  4. linux动态链接库---一篇讲尽

    一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如: tmux: error while loading shared libraries: libevent-1.4.s ...

  5. python继承的实例

    class SchoolMember(object):#定义学校 member=0#默认成员为0个 amount=0#默认学费为0元 def __init__(self,name,age,sex):# ...

  6. IFrame跨域访问自定义高度

    由于JS禁止跨域访问,如何实现不同域的子页面将高度返回给父页面本身,是解决自定义高度的难点. JS跨域访问问题描述:应用A访问应用B的资源,由于A,B应用分别部署在不同应用服务器(tomcat)上,属 ...

  7. eclipse快速定位java对应的class

    当前设置值,只能定位class文件 设置eclipse External Tools Configurations... Program --> new New 创建viewclass.bat文 ...

  8. jquey插件开发

    1.概述 jquery插件开发的主要方法有三种: 1.通过$.extend()来扩展jQuery,即在jQuery命名空间下扩展属性,直接在$对象下调用,不需要再dom下调用,也无法在dom元素下调用 ...

  9. builds error

    使用cocoapods 出现Undefined symbols for architecture i386: _OBJC_CLASS_$_XXXXXXX", referenced from: ...

  10. Django performance

    Reference: https://impythonist.wordpress.com/2016/02/21/building-high-performance-django-systems/ Th ...