内功心法 -- java.util.ArrayList<E> (3)
写在前面的话:读书破万卷,编码如有神
--------------------------------------------------------------------
下文主要对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)的更多相关文章
- 内功心法 -- java.util.ArrayList<E> (1)
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...
- 内功心法 -- java.util.ArrayList<E> (2)
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...
- 内功心法 -- java.util.ArrayList<E> (4)
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...
- 内功心法 -- java.util.ArrayList<E> (5)
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...
- 内功心法 -- java.util.ArrayList<E> (6)
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...
- 解决springmvc报No converter found for return value of type: class java.util.ArrayList问题
一.背景 最近闲来无事,想自己搭建一套Spring+SpringMVC+Mybatis+Mysql的环境(搭建步骤会在以后博客中给出),结果运行程序时,适用@ResponseBody注解进行返回Lis ...
- Java.util.ArrayList详解
java.util.ArrayList就是传说中的动态数组. 继承了关系,有此可看出ArrayList与list的collection的关系 public class ArrayList<E&g ...
- java@ 利用ArrayList实现dijkstra算法以及topological 排序算法(java.util.ArrayList)
package dataStructure; import java.util.ArrayList; import java.util.LinkedList; import java.util.Que ...
- java.util.ArrayList、java.util.vector和java.util.LinkedList (JDK 1.8.0_111)
一.java.util.ArrayList 1.1 ArrayList 继承结构 ArrayList实现了RandomAccess,可以随机访问(其实就是通过数组下标访问):实现了Cloneable, ...
随机推荐
- 用div做下拉列表
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ASP.NET AJAX 创建类
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans ...
- JS中Exception处理
程序开发中,编程人员经常要面对的是如何编写代码来响应错误事件的发生,即例外处理(exception handlers).如果例外处理代码设计得周全,那么最终呈现给用户的就将是一个友好的界面.否则,就会 ...
- 深入理解SQL的四种连接
SQL标准 select table1.column,table2.column from table1 [inner | left | right | full ] join table2 on t ...
- 使用命令创建github代码仓库,push本地仓库到github远程代码仓库
1.利用命令创建github远程代码仓库 在将本地代码push到github远程代码仓库之前,总是需要新建github代码仓库,在将本地仓库关联到github远程仓库.其中最为繁琐的操作是建立gith ...
- TCP carries HTTP data in order, and without corruption
wTCP/IP承载几乎所有的HTTP通信. HTTP The Definitive Guide
- Subpub 订阅/发布
var Pubsub = (function (window) { window.handlers = {}; var o = { pub: function () { var args = Arra ...
- YII 1.0 分页类
在控制器中 方法1 $criteria = new CDbCriteria();//AR的另一种写法 $model = Article::model(); $total = $model->co ...
- 线程(thread)
线程(thread): 现代操作系统引入进程概念,为了并发(行)任务 1.进程之间的这种切换代价很高 2.通信方式的代价也很大基本概念: 1.线程是比进程更小的资源单位,它是进程中的一个执行路线(分支 ...
- Struts2框架学习(一)
Struts2框架学习(一) 1,Struts2框架介绍 Struts2框架是MVC流程框架,适合分层开发.框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计. 2 ...