00 28Java高级之List集合

1 List接口简介

List是Collection子接口,其最大的特点是允许保存有重复元素数据,其接口定义如下:

public interface List<E> extends Collection<E>

但是需要清楚的是List子接口对于Collection接口可是进行了方法扩充。
(1)获取指定索引上的数据:E get​(int index)
(2)修改指定索引数据:E set​(int index, E element)
(3)返回ListIterator接口对象:ListIterator<E> listIterator()

但是List本身依然属于一个接口,那么对于接口要想使用则一定要使用子类来完成定义,在List子接口中有三个常用子类,分别是ArrayList、Vector、LinkedList。

从JDK 1.9开始List子接口里面追加有一些static方法,以方便用户的处理。
范例:观察List中的静态方法

package org.lks.demo;

import java.util.List;

public class JavaReflectDemo {
   
	public static void main(String[] args) {
   
		List<String> list = List.of("hello", "another", "me", "!");
		list.forEach(System.out::println);
		
	}

}

这些操作方法并不是List传统用法,是在新版本之后添加的新功能。

2 ArrayList子类

ArrayList是List子接口使用最多的一个子类,但是这个子类在使用的时候也是有前提要求,所以本次来对这个类的相关定义以及源代码组成进行分析,在Java里面ArrayList的定义如下:

public class ArrayList<E>
extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, Serializable

ArrayList子类的继承结构如下所示:
范例:使用ArrayList实例化List父接口

package org.lks.demo;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class JavaReflectDemo {
   
	public static void main(String[] args) {
   
		List<String> list = new ArrayList<String>();
		list.add("hello");
		list.add("hello");
		list.addAll(list);
		list.add("world");
		System.out.println(Arrays.deepToString(list.toArray()));
		
	}

}


通过本程序可以发现List存储的特征:
(1)保存的顺序就是其存储顺序;
(2)List集合里面允许存在有重复数据。

在以上的程序里面虽然实现了集合的输出,但是这种输出的操作是直接利用了每个类提供的toString()方法实现的,为了方便的进行输出处理,在JDK 1.8之后Iterable父接口之中定义有一个foreach()方法,方法定义如下:
(1)输出支持:public void forEach​(Consumer<? super E> action)
范例:利用foreach()方法输出(不是标准输出)

package org.lks.demo;

import java.util.ArrayList;
import java.util.List;

public class JavaReflectDemo {
   
	public static void main(String[] args) {
   
		List<String> list = new ArrayList<String>();
		list.add("hello");
		list.add("hello");
		list.addAll(list);
		list.add("world");
		list.forEach(System.out::println);
		
	}

}

需要注意的是,此种输出并不是在正常开发情况下要考虑的操作形式。
范例:观察LIst集合的其他操作方法

package org.lks.demo;

import java.util.ArrayList;
import java.util.List;

public class JavaReflectDemo {
   
	public static void ma
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值