------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、List集合

  List集合代表一个元素有序、客重复的集合,集合中每个元素都有其对应的顺序索引。List

集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。List集合默认按元素的添加

顺序设置元素的索引,例如第一次添加的元素索引为0,第二次添加的元素索引为1......

1.List接口和ListIterator接口

  List作为Collection接口的子接口,所以可以使用Collection接口里全部的方法。而且List

是有序集合,因此List集合里增加了一些根据索引来操作集合元素的方法。

1)void add(int index, Object element):将元素element插入到List集合的index处。

2)boolean addAll(int index, Collection c):将集合c所包含的所有元素都插入到List集合的

index处。

3)Object get(int index):返回集合index索引处的元素。

4)int indexOf(Object o):返回对象o在List集合中第一次出现的位置索引。

5)int lastIndexOf(Object o):返回对象o在List集合中最后一次出现的位置索引。

6)Obejct remove(int index):删除并返回index索引处的元素。
7)Object set(int index, Object element):将index索引处的元素替换成element对象,返

回新元素。

8)List subList(int fromIndex, int toIndex):返回从索引fromIndex(包含)到索引toIndex

(不包含)处所哟机会元素组成的子集合。

所有的List实现类都可以调用这些方法来操作集合元素。与Set集合相比,List增加了根据索引插

入、替换和删除集合元素的方法。下面程序演示了List集合的常规用法。

 import java.util.ArrayList;
import java.util.List; public class ListTest { public static void main(String[] args) { List test = new ArrayList<>();
//向test集合添加三个元素
test.add(new String("黑马程序员"));
test.add(new String("传智播客"));
test.add(new String("CSDN"));
System.out.println(test);
//将新字符串对象插入在第二个位置
test.add(1, new String("传智播客"));
/*for (Object object : test) {
System.out.println(object);
}*/
for (int i = 0; i < test.size(); i++) {
System.out.println(test.get(i));
}
//删除第三个元素
test.remove(2);
System.out.println(test);
//判断指定元素在List集合中的位置,输出2 ,表明唯一第二位
System.out.println(test.indexOf(new String("CSDN")));
//将第二个元素替换成新的字符串对象
test.set(0, new String("CSDN"));
System.out.println(test);
//将test集合的第二个元素(包含)到第三个元素(不包含)截取成子集合
System.out.println(test.subList(1, 2));
} }

运结果:

[黑马程序员, 传智播客, CSDN]
黑马程序员
传智播客
传智播客
CSDN
[黑马程序员, 传智播客, CSDN]
2
[CSDN, 传智播客, CSDN]
[传智播客]

2.ArrayList和Vector实现类

  ArrayList和Vector作为List类的两个典型实现,完全支持前面介绍的List接口的全部功能。

ArrayList和Vector类都是基于数字是的List类,所有ArrayList和Vector类封装了一个动态的、

允许再分配的Object[]数组。ArrayList或Vector对象使用initalCapacity参数来设置该数组的

长度,当向ArrayList或Vector中添加元素超出了该数组的长度是,它们的initalCapacity会自

动增加。如果创建空的ArrayList或Vector集合时不指定initalCapacity参数,则Object[]数组

的长度默认为10。

  此外,ArrayList和Vector还提供了如下两个方法来重新分配Object[]数组。

  1)void ensureCapacity(int minCapacity):将ArrayList或Vector集合的Object[]数组

      增加minCapacity。  

  2)void trimToSize():调整ArrayList或Vector集合的Object[]数组长度为当期元素的个

      数。程序客调用该方法来减少ArrayList或Vector集合对象占用的存储空间。

  Vector还提供了一个Stack子类,它用于模拟“栈”这种数据结构,“栈”通常是指“后进先出”

(LIFO)的容器。最后“push”进栈的元素,将最先被“pop”出栈。与Java中的其他集合一样,进

栈出栈的都是Object,因此从栈中取出元素后必须进行类型转换。所以Stack类里提供了如下几

个方法。

1)Object peek():返回“栈”的第一个元素,但并不将该元素“pop”出栈。

2)Object pop():返回“栈”的第一个元素,并将该元素“pop”出栈。

3)void push(Object item):将一个元素“push”进栈,最后一个进“栈”的元素总是位于“栈”顶。

如下程序示范 Vector作为“栈”的功能。

 import java.util.Stack;

 public class VectorTest {

     public static void main(String[] args) {

         Stack vStack = new Stack<>();
//一次将三个元素“push”入栈
vStack.push("黑马程序员");
vStack.push("传智播客");
vStack.push("CSDN"); System.out.println(vStack);
//访问第一元素,但并不将其“pop”出栈
System.out.println(vStack.peek());
System.out.println(vStack);
//“pop”出栈第一个元素
System.out.println(vStack.pop());
System.out.println(vStack);
} }

运行结果:

[黑马程序员, 传智播客, CSDN]
CSDN
[黑马程序员, 传智播客, CSDN]
CSDN
[黑马程序员, 传智播客]

  由于Stack继承了Vector,因它也是一个非常古老的Java集合类,它是线程安全的,性能比较

差,所以现在的程序中一般较少使用Stack类。如果程序需要使用“栈”这种数据结构,则可以考虑使

用LinkedList。

Java——(五)Collection之List集合、ArrayList和Vector实现类的更多相关文章

  1. 集合(一)Collection、List、ArrayList和Vector

    一.Collection 集合存放在java.util包中,可以看作是集成好的数据结构,供你调用,十分方便,集合经常拿来和数组对比,其实我觉得没啥可比性,不过还是简单来看看它们的区别: 1.数组长度固 ...

  2. JAVA中Collection接口和Map接口的主要实现类

    Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素 ...

  3. Collection与Collections、ArrayList和Vector、HashMap和Hashtable(面试常用)

    Collections与Collection 1. Collections是java.util下的类,它包含有各种有关集合操作的静态方法2. Collection是java.util下的接口,它是各种 ...

  4. 集合类源码(二)Collection之List(ArrayList, LinkedList, Vector)

    ArrayList 功能 完全命名 public class ArrayList<E> extends AbstractList<E> implements List<E ...

  5. Collection接口【集合】和Iterator迭代器类

    1.1集合的概述 前面基础学习并使用过集合ArrayList<E>,那么集合究竟是什么呢? 集合:集合是Java中提供的一种容器,可以用来存储多个数据. 那么意思就是说集合是容器,但是容器 ...

  6. Java进阶(四十六)简述ArrayList、Vector与LinkedList的异同点

    简述ArrayList.Vector与LinkedList的异同点   Collection类的继承图如下:   从图中可以看出,LinkedList与ArrayList.ArrayDeque这三者都 ...

  7. 一、基础篇--1.2Java集合-ArrayList和Vector的区别

     ArrayList和Vector的区别 ArrayList和Vector都是基于动态数组实现的.  区别 ArrayList是非线程安全的,Vector是线程安全的. Vector的方法都加了同步锁 ...

  8. Java集合框架(三)—— List、ArrayList、Vector、Stack

    List接口 List集合代表一个有序集合,集合中每一个元素都有其对应的顺序索引.List集合容许使用重复元素,可以通过索引来访问指定位置的集合对象. ArrayList和Vector实现类 Arra ...

  9. Java集合--ArrayList,LinkedList性能分析

    转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308900.html 第1部分 List概括 先回顾一下List的框架图 (01) List 是一个接口 ...

随机推荐

  1. 配有Tesla K40c的服务器新装Ubuntu16.04并安装CUDA8.0、Anaconda3、Matlab2016a、OPENCV3.1、CuDNN5.1、MXNet

    注:本文原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) 决定加入深度学习的大军,感谢导师给配了台新设备!第一次接触服务器并配置开发环境,整个过程中 ...

  2. Windows Azure云服务价格调整通知

     好消息!由世纪互联运营的 Windows Azure推出优惠啦.我们采纳了多渠道客户的意见和建议,为了更好地服务大家,将降低多种云服务的价格,其中包括我们最受欢迎的服务 -虚拟机和 Block ...

  3. 利用MVC的过滤器实现url的参数加密和解密

    最近在与一个IOS应用做接口对接,之前一直都没有遇到什么很大的问题,但是有一天发现可以通过软件解析app的url,然后直接通过url的拼接修改接口数据,这一下使得数据的安全性和准确性都降低了,于是就想 ...

  4. Oracle数据库12560及更改密码为永久

    小厂子的程序员还要折腾Oracle维护.这这里简单记录一下Oracle数据库服务器使用时遇到并解决的一些问题. 1. 在Oracle数据库服务器上(即安装Oracle数据库端的机器上),可以使用命令 ...

  5. (转载)ubuntu安装pyton-pip问题解决

    一.问题描述 root@ubuntu:/home/chao# apt-get install python-pip 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... ...

  6. 元素重叠及position定位的z-index顺序

    元素位置重叠的背景常识 (x)html文档中的元素默认处于普通流(normal flow)中,也就是说其顺序由元素在文档中的先后位置决定,此时一般不会产生重叠(但指定负边距可能产生重叠).当我们用cs ...

  7. PHP中Content-type的MIME类型大全说明

    <?php $mimetypes = array(         'ez' => 'application/andrew-inset', 'hqx' => 'application ...

  8. 《A First Course in Probability》-chaper8-极限定理-弱大数定理

    基于之前强大数定理的得证,这里我们再结合切比雪夫不等式,能够得到弱大数定理. 弱大数定理: 表面上,强大数定理和弱大数定理好像是质同的,但是他们之间真正的区别到底是什么呢?

  9. C++Primer第5版学习笔记(三)

    C++Primer第5版学习笔记(三) 第四/五章的重难点内容           你可以点击这里回顾第三章内容       因为第五章的内容比较少,因此和第四章的笔记内容合并.       第四章是 ...

  10. 一些收费的vpn或ssh代理

    www.expressvpn.com TorGuard:    https://help.ubuntu.com/community/Tor?action=show&redirect=TOR h ...