java list详解_Java 中 list 用法案例详解

LIST是个容器接口可以理解为动态数组,传统数组必须定义好数组的个数才可以使用,而容器对象无须定义好数组下标总数,用add()方法即可添加新的成员对象,他可以添加的仅仅只能为对象,不能添加基本数据类型,容器还对应get(),remove()方法来获取和删除数据成员。

java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对java list用法做了详解

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

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

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

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

List:特有的方法,凡是可以操作角标的方法都是该体系特有的方法。

增加,代码如下:

boolean add(int index, E element)

boolean addAll(index,Collection)

boolean addAll(Collection)

public static void addData(){

List list1 = new ArrayList();

list1.add("www.yoodb.com");

list1.add("www.yoodb.com");//List集合中元素可重复

list1.add("yoodb.com");

list1.add("com");

System.out.println("输出原集合:" + list1);

List list2 =  new ArrayList();

list2.add("yoodb");

list1.addAll(list2);

System.out.println("输出变更的集合" + list1);

}

输出原集合:[www.yoodb.com, www.yoodb.com, yoodb.com, com]

输出变更的集合[www.yoodb.com, www.yoodb.com, yoodb.com, com, yoodb]

删除指定位置的元素,如下:

E remove(int index);

boolean remove(Object o);

boolean removeAll(Collection> c);

public static void removeData(){

List list1 = new ArrayList();

list1.add("www.yoodb.com");

list1.add("www.yoodb.com");//List集合中元素可重复

list1.add("yoodb.com");

list1.add("com");

System.out.println("输出原集合:" + list1);

list1.remove(0);

System.out.println("输出变更的集合" + list1);

}

输出原集合:[www.yoodb.com, www.yoodb.com, yoodb.com, com]

输出变更的集合[www.yoodb.com, yoodb.com, com]

修改指定角标的元素  set(int index, E element)  返回的是修改的那个元素,如下:

public static void updateData(){

List list1 = new ArrayList();

list1.add("www.yoodb.com");

list1.add("www.yoodb.com");//List集合中元素可重复

list1.add("yoodb.com");

list1.add("com");

System.out.println("输出原集合:" + list1);

list1.set(1, "yoodb");

System.out.println("输出变更的集合" + list1);

}

输出原集合:[www.yoodb.com, www.yoodb.com, yoodb.com, com]

输出变更的集合[www.yoodb.com, yoodb, yoodb.com, com]

查询,代码如下:

E get(int index);// 返回列表中指定位置的元素

List subList(int fromIndex, int toIndex);// 返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分元素

public static void addData(){

List list1 = new ArrayList();

list1.add("www.yoodb.com");

list1.add("www.yoodb.com");//List集合中元素可重复

list1.add("yoodb.com");

list1.add("com");

System.out.println("输出原集合:" + list1);

System.out.println("输出" + list1.get(0));

System.out.println("输出" + list1.subList(0, 2));

}

输出原集合:[www.yoodb.com, www.yoodb.com, yoodb.com, com]

输出www.yoodb.com

输出[www.yoodb.com, www.yoodb.com]

List集合特有的迭代器:ListIterator(是Iterator的子接口),主意事项如下:

在迭代时,是不可以通过集合对象的方法操作集合中的元素

因为会发生ConcurrentModificationException异常(并发异常)

所以,在迭代器时,只能用迭代器的方法造作元素

因为Iterator方法是有限的所以只能对元素进行判断,取出,删除的操作

如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator

该接口只能通过List集合的listIterator方法获取。

代码实现如下:

public static void addData() {

List list1 = new ArrayList();

list1.add("www.yoodb.com");

list1.add("www.yoodb.com");// List集合中元素可重复

list1.add("yoodb.com");

list1.add("com");

System.out.println("输出原集合:" + list1);

// 只有List的listIterator有增,删,改,查这些功能,因为只有List有索引

ListIterator li = list1.listIterator();

while (li.hasNext()) {

if (li.next().equals("www.yoodb.com"))

li.set("yoodb");

}

System.out.println("输出变更集合:" + list1);

}

输出原集合:[www.yoodb.com, www.yoodb.com, yoodb.com, com]

输出变更集合:[yoodb, yoodb, yoodb.com, com]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值