java中变量数组的原理是不断创建新的数组,并将原来的数组添加到新的数组中。下面详细解释java list的用法。
|-List:元素按顺序排列(怎么保存,怎么取出,顺序不会乱),元素可以重复(角标1上有个3,角标2上有个3)因为收藏系统有索引,
| - ArrayList:底层数据结构使用数组结构(数组长度为变量50%扩展)(特点是查询快,但添加删除慢)。线程不同步。
| - LinkedList:底层数据结构是链表结构(特点是查询慢,增删快)
| - Vector:底层是数组数据结构的线程同步(数组长度可变100%扩展)(查询和增删都慢,用ArrayList代替)
列表:独特的方法。所有可以操作角标记的方法都是该系统独有的。
提高
布尔加法(int index,E element)
布尔addAll(索引,集合)
public static void List_add(){
ArrayList a1=new ArrayList();
a1 . add(' Java ');
a1 . add(' PHP ');//列表集合中的元素可以重复
a1.add('。net’);
System.out.println('原始集:' a1 ');
a1.add(1,' Flash ');
a1.add(0,' PS ');
system . out . println(a1);
ArrayList a2=new ArrayList();
a2 . add(' JavaScript ');
a2 . add(' 3d max ');
a2 . add(' IBM ');
a1.addAll(0,a2);
system . out . println(a1);
}
删除指定位置的元素。
布尔删除(整数索引)
public static void List_remove(){
ArrayList a1=new ArrayList();
a1 . add(' JavaScript ');
a1 . add(' PHP ');
a1 . add(' flash ');
System.out.println('原始集:' a1 ');
a1 .删除(0);
system . out . println(a1);
}
修改角标的元素集(int index,e element)返回修改后的元素。
public static void List_set() {
ArrayList a1=new ArrayList();
a1 . add(' JavaScript ');
a1 . add(' PHP ');
a1.add('。net’);
System.out.println('原始集:' a1 ');
a1.set(1,' falsh ');
system . out . println(a1);
}
支票
Get(int index)返回列表中指定位置的元素。
Sublist (int fromIndex,int toIndex)返回列表中指定的fromIndex(包括)和toIndex(不包括)之间的一些元素。
公共静态void List_get() {
ArrayList a1=new ArrayList();
a1 . add(' Java ');
a1 . add(' PHP ');
a1 . add(' flash ');
system . out . println(a1 . get(0));//获取指定角标的元素,用这个方法可以遍历集合中的所有元素。
system . out . println(a1 . sublist(1,3));//获取集合的一部分的元素,包括头但不包括尾。
}
特定于列表的迭代器:ListIterator(它是迭代器的子接口)
注意:
在迭代过程中,不能通过集合对象的方法操作集合中的元素。
因为会发生concurrentmodificationexception异常(并发异常)。
因此,在迭代器中,只有迭代器可以用来创建元素。
因为迭代器方法是有限制的,只能判断、取出、删除元素。
如果想进行添加、修改等其他操作,需要使用它的子接口ListIterator。
此接口只能通过列表集合的Listiterator方法获得。
公共类ListIteratorDemo {
公共静态void main(String[] args) {
ArrayList a1=new ArrayList();
a1 . add(' Java 01 ');
a1 . add(' Java 02 ');
a1 . add(' Java 03 ');
a1 . add(' Java 04 ');
System.out.println('原集为:' a1 ');
/*准备在迭代期间添加或删除元素
迭代器it=al . iterator();
while (it.hasNext()){
object obj=it . next();
if (obj.equals('java02 '))
//al . add(' Java 008 ');//会出现并发异常,因为迭代器在操作集合,集合不能再被集合的方法操作。
it . remove();//从集合中删除对java02的引用
system . out . println(' obj:' obj ');
}
*/
//只有列表的列表迭代器才有添加、删除、更改和检查的功能,因为只有列表才有索引。
list iterator Li=a1 . list iterator();
while (li.hasNext()){
if(李. next()。等于(' java02 '))
//Li . add(' Java 009 ');
Li . set(' Java 006 ');
}
}
}
Vector:枚举是Vector特有的取数方式,和迭代器很像(其实枚举和迭代是一样的),已经被迭代器取代了。
公共类VectorDemo {
公共静态void main(String[] args) {
向量v=新向量();
v . add(' Java 01 ');
v . add(' Java 02 ');
v . add(' Java 03 ');
v . add(' Java 04 ');
for(Enumeration en=v . elements();en . hasmoreelements();){
system . out . println(en . nextelement());
}
}
}
链接列表:
独特的方法:
add first();在标头中添加元素add last();在末尾添加元素。
get first();get last();获取元素而不删除它们。如果集合中没有元素,将出现NoSuchElementException。
remove first();remove last();获取元素,但删除它。如果集合中没有元素,将出现NoSuchElementException。
JDK1.6中有一个替代方法。
offer first();offer last();
peek first();peek last();获取元素,但不删除元素。如果集合中没有元素,则返回null。
poll first();poll last();获取元素,但元素被删除。如果集合中没有元素,则返回null。
公共类LinkedListDemo {
公共静态void main(String[] args) {
linked list link=new linked list();
link . add(' Java 01 ');
link . add(' Java 02 ');
link . add(' Java 03 ');
link . add(' Java 04 ');
而(!link.isEmpty()){
system . out . println((link . remove last()));
}
}
}
下面是补充
列表的用法
包括列表接口和列表接口的所有实现类。因为list接口实现了Collection接口,所以List接口拥有Collection接口提供的所有常用方法,而且因为List是List类型,所以List接口也提供了一些适合自己的常用方法,如表1所示。
表1列表界面定义的常用方法和功能
从表1可以看出,列表界面提供的适合自身的常用方法都是与索引相关的。这是因为列表集是一种列表类型,以线性方式存储对象,并且可以通过对象的索引来操作对象。
List接口常用的实现类有ArrayList和LinkedList。使用列表集合时,通常声明为列表类型,实例化时根据实际情况实例化为ArrayList或LinkedList,例如:
ListString l=new ArrayList string();//用ArrayList类实例化列表集合
list string L2=new linked ListString();//用LinkedList类实例化列表集合
1add(int index, Object obj)方法和set(int index, Object obj)方法的区别
使用列表集时,需要区分add(int index,Object obj)方法和set(int index,Object obj)方法。前者是在指定的索引位置添加一个对象,后者是在指定的索引位置修改对象,比如执行下面的代码:
src/com/mwq/test collection . Java关键代码:
公共静态void main(String[] args) {
字符串a='A ',b='B ',c='C ',d='D ',e=' E
ListString list=new linked ListString();
list . add(a);
list . add(e);
list . add(d);
list.set(1,b);//将索引位置为1的对象E修改为对象b。
list.add(2,c);//将对象C添加到索引位置为2的位置
iterator string it=list . iterator();
while (it.hasNext()) {
system . out . println(it . next());
}
}
控制台将输出以下信息:
A
B
C
D
因为列表集合可以通过索引位置访问对象,所以它也可以通过for循环遍历列表集合。例如,上面代码中遍历列表集合的代码如下:
src/com/mwq/test collection . Java关键代码:
for(int I=0;I list . size();i ) {
system . out . println(list . get(I));//使用get(int index)方法获取指定索引位置的对象
}
src/com/mwq/test collection . Java的完整代码如下:
包com.mwq
导入Java . util . ArrayList;
导入Java . util . linked list;
导入Java . util . iterator;
导入Java . util . list;
公共类TestCollection {
公共静态void main(String[] args) {
system . out . println(' start:');
字符串a='A ',b='B ',c='C ',d='D ',e=' E
ListString list=new linked ListString();
list . add(a);
list . add(e);
list . add(d);
list.set(1,b);//将索引位置为1的对象E修改为对象b。
list.add(2,c);//将对象C添加到索引位置为2的位置
iterator string it=list . iterator();
while (it.hasNext()) {
系统。出去。println(it。next());
}
//for(int I=0;我列出。size();i ) {
//系统。出去。println(列表。get(I));//利用get(int index)方法获得指定索引位置的对象
//}
System.out.println('结束!');
}
}
2indexOf(Object obj)方法和lastIndexOf(Object obj)方法的区别
在使用目录集合时需要注意区分索引Of(对象对象)方法和lastIndexOf对象对象)方法,前者是获得指定对象的最小的索引位置,而后者是获得指定对象的最大的索引位置,前提条件是指定的对象在目录集合中具有重复的对象,否则如果在目录集合中有且仅有一个指定的对象,则通过这两个方法获得的索引位置是相同的,例如执行下面的代码:
src/com/mwq/测试集合。Java 语言(一种计算机语言,尤用于创建网站)关键代码:
公共静态void main(String[] args) {
字符串a='A ',b='B ',c='C ',d='D ',重复='重复'
ListString list=new ArrayList string();
列表。增加(a);//索引位置为0
list.add(重复);//索引位置为一
列表。添加(b);//索引位置为2
list.add(重复);//索引位置为3
列表。添加(c);//索引位置为四
list.add(重复);//索引位置为5
列表。添加(d);//索引位置为6
系统。出去。println(列表。(重复)的索引;
系统。出去。println(列表。lastindexof(repeat));
系统。出去。println(列表。(b)的索引;
系统。出去。println(列表。lastindexof(b));
}
src/com/mwq/测试集合。Java 语言(一种计算机语言,尤用于创建网站)完整代码如下:
包com.mwq
导入Java。util。ArrayList
导入Java。util。列表;
公共类测试集合{
公共静态void main(String[] args) {
System.out.println('开始:');
字符串a='A ',b='B ',c='C ',d='D ',重复='重复'
ListString list=new ArrayList string();
列表。增加(a);//索引位置为0
list.add(重复);//索引位置为一
列表。添加(b);//索引位置为2
list.add(重复);//索引位置为3
列表。添加(c);//索引位置为四
list.add(重复);//索引位置为5
列表。添加(d);//索引位置为6
系统。出去。println(列表。(重复)的索引;
系统。出去。println(列表。lastindexof(repeat));
系统。出去。println(列表。(b)的索引;
系统。出去。println(列表。lastindexof(b));
System.out.println('结束!');
}
}
在控制台将输出如下信息:
一
5
2
2
3subList(int fromIndex, int toIndex)方法
在使用子列表(int fromIndex,int toIndex)方法截取现有目录集合中的部分对象生成新的目录集合时,需要注意的是,新生成的集合中包含起始索引位置代表的对象,但是不包含终止索引位置代表的对象,例如执行下面的代码:
src/com/mwq/测试集合。Java 语言(一种计算机语言,尤用于创建网站)关键代码:
公共静态void main(String[] args) {
字符串a='A ',b='B ',c='C ',d='D ',e=' E
ListString list=new ArrayList string();
列表。增加(a);//索引位置为0
列表。添加(b);//索引位置为一
列表。添加(c);//索引位置为2
列表。添加(d);//索引位置为3
列表。添加(e);//索引位置为四
list=list.subList(1,3);//利用从索引位置一到3的对象重新生成一个目录集合
for(int I=0;我列出。size();i ) {
系统。出去。println(列表。get(I));
}
}
src/com/mwq/测试集合。Java 语言(一种计算机语言,尤用于创建网站)完整代码:
包com.mwq
导入Java。util。ArrayList
导入Java。util。列表;
公共类测试集合{
公共静态void main(String[] args) {
System.out.println('开始:');
字符串a='A ',b='B ',c='C ',d='D ',e=' E
ListString list=new ArrayList string();
列表。增加(a);//索引位置为0
列表。添加(b);//索引位置为一
列表。添加(c);//索引位置为2
列表。添加(d);//索引位置为3
列表。添加(e);//索引位置为四
list=list.subList(1,3);//利用从索引位置一到3的对象重新生成一个目录集合
for(int I=0;我列出。size();i ) {
系统。出去。println(列表。get(I));
}
System.out.println('结束!');
}
}
在控制台将输出如下信息:
B
C
到此这篇关于Java语言(一种计算机语言,尤用于创建网站)列表用法示例详解的文章就介绍到这了,更多相关Java语言(一种计算机语言,尤用于创建网站)列表用法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。