java list_Java List类

Java List类

List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下 >标)来访问List中的元素,这类似于Java的数组。

定义

方法

List list = new ArrayList();

// 向列表的尾部追加指定的元素

list.add("lwc");

// 在列表的指定位置插入指定元素

list.add(1, "nxj");

// 追加指定 collection 中的所有元素到此列表的结尾

list.addAll(new ArrayList());

// 从列表中移除所有元素

list.clear();

// 如果列表包含指定的元素,则返回true

list.contains("nxj");

// 如果列表包含指定 collection 的所有元素,则返回 true

list.containsAll(new ArrayList());

// 比较指定的对象与列表是否相等

list.equals(new ArrayList());

// 返回列表中指定位置的元素

list.get(0);

// 返回列表的哈希码值

list.hashCode();

// 返回列表中首次出现指定元素的索引,如果列表不包含此元素,则返回 -1

list.indexOf("lwc");

// 返回列表中最后出现指定元素的索引,如果列表不包含此元素,则返回 -1

list.lastIndexOf("lwc");

// 如果列表不包含元素,则返回 true

list.isEmpty();

// 移除列表中指定位置的元素

list.remove(0);

// 移除列表中出现的首个指定元素

list.remove("lwc");

// 从列表中移除指定 collection 中包含的所有元素

list.removeAll(new ArrayList());

// 用指定元素替换列表中指定位置的元素

list.set(0, "lp");

// 返回列表中的元素数

list.size();

// 返回列表中指定的fromIndex(包括)和toIndex(不包括)之间的部分视图

list.subList(1, 2);

// 返回以正确顺序包含列表中的所有元素的数组

list.toArray();

// 返回以正确顺序包含列表中所有元素的数组

list.toArray(new String[] { "a", "b" });

继承体系

|--List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3,角标2上也可以有个3)因为该集合体系有索引,

|-- ArrayList:底层的数据结构使用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删较慢)线程不同步

|-- LinkedList:底层的数据结构是链表结构(特点是查询较慢,增删较快)

|-- Vector:底层是数组数据结构 线程同步(数组长度是可变的百分之百延长)(无论查询还是增删都很慢,被ArrayList替代了)

优势

1. List接口在iterator、add、remove、equals和hashCode方法的协定上加了一些其他约定,超过了Collection接口中指定的约定。为方便起见,这里也包括了其他继承方法的声明。

2. List接口提供了 4 种对列表元素进行定位(索引)访问方法。列表(像 Java 数组一样)是基于 0 的。注意,这些操作可能在和某些实现(例如LinkedList类)的索引值成比例的时间内执行。因此,如果调用方不知道实现,那么在列表元素上迭代通常优于用索引遍历列表。

3. List接口提供了特殊的迭代器,称为ListIterator,除了允许Iterator接口提供的正常操作外,该迭代器还允许元素插入和替换,以及双向访问。还提供了一个方法来获取从列表中指定位置开始的列表迭代器。

4. List接口提供了两种搜索指定对象的方法。从性能的观点来看,应该小心使用这些方法。在很多实现中,它们将执行高开销的线性搜索。

5. List接口提供了两种在列表的任意位置高效插入和移除多个元素的方法。

总结

1. 所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-Value键值对。例如:[ tom,1,c ]

2. 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ]

3. 所有的List中可以有null元素,例如[ tom,null,1 ]

4. 基于Array的List(Vector,ArrayList)适合查询,而LinkedList 适合添加,删除操作

例子

packagecom.mwq;

importjava.util.ArrayList;

importjava.util.List;

publicclassTestCollection {

publicstaticvoidmain(String[] args) {

System.out.println("开始:");

String a = "A", b ="B", c ="C", d ="D", repeat ="Repeat";

List list = newArrayList();

list.add(a); // 索引位置为 0

list.add(repeat); // 索引位置为 1

list.add(b); // 索引位置为 2

list.add(repeat); // 索引位置为 3

list.add(c); // 索引位置为 4

list.add(repeat); // 索引位置为 5

list.add(d); // 索引位置为 6

System.out.println(list.indexOf(repeat));

System.out.println(list.lastIndexOf(repeat));

System.out.println(list.indexOf(b));

System.out.println(list.lastIndexOf(b));

System.out.println("结束!");

}

}

在控制台将输出如下信息:

1

5

2

2

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值