Java List集合子类——ArrayList和LinkedList的基本使用和特点、ArrayList遍历的方式、为什么写成List = new ArrayList

List集合常用子类: ArrayList, LinkedList有序、可重复、有索引


ArrayList:

底层数据结构是数组,查询快,增删慢

一般写法:
List<> ls = new ArrayList<>();

向上类型转换(小转大):
语法规则:<父类型> <引用变量名> = new <子类型>();

  1. 此时通过父类引用变量调用的方法是子类覆盖或继承
    父类的方法,不是父类的方法。
  2. 此时通过父类引用变量无法调用子类特有的方法。

ArrayList几乎满足List的所有功能,List是接口不能直接使用。

  • public void add(int index, E element):
    将指定的元素,添加到该集合中的指定位置上。

  • public E get(int index) :
    返回集合中指定位置的元素。

  • public E remove (int index):
    移除列表中指定位置的元素,返回的是被移除的元素。

  • public E set(int index, E element) :
    用指定元素替换集合中指定位置的元素,返回值更新前的元素。

ArrayList遍历的方式:

Collection集合没有for循环方式;
List系列集合多了索引,所以多了一种按照索引遍历集合的for循环。
List遍历方式:

  1. for循环
  2. 迭代器
  3. foreach增强for
  4. JDK 1.8新技术Lambda。

LinkedList:

底层数据结构是链表,查询慢,增删快

一般写法:
LinkedList<> ls = new LinkedList<>();
因为要调用其特有方法

LinkedList是支持双链表,定位前后的元素是非常快的,增删前后的元素也是最快的,
所以LinkedList除了拥有List集合的全部功能还多了很多操作首尾元素的特殊功能:

void addFirst​(E e) 在该列表开头插入指定的元素。
void addLast​(E e) 将指定的元素追加到此列表的末尾。

E getFirst​() 返回此列表中的第一个元素。
E getLast​() 返回此列表中的最后一个元素。

E removeFirst​() 从此列表中删除并返回第一个元素。
E removeLast​() 从此列表中删除并返回最后一个元素。

E pop​() 从此列表表示的堆栈中弹出一个元素。
void push​(E e) 将元素推送到由此列表表示的堆栈上。


分别使用ArrayList和LinkedList完成存储字符串并遍历

public class ListTest {
	public static void main(String[] args) {

		// ArrayList
		ArrayList<String> array = new ArrayList<>();
		array.add("hello");
		array.add("world");
		array.add("java");

		// 遍历
		for (String s : array) {
			System.out.println(s);
		}

		System.out.println("--------------");

		for (int i = 0; i < array.size(); i++) {
			String s = array.get(i);
			System.out.println(s);
		}

		System.out.println("--------------");

		Iterator<String> it = array.iterator();
		while (it.hasNext()) {
			String s = it.next();
			System.out.println(s);
		}

		System.out.println("--------------");

		// LinkedList
		LinkedList<String> linkls = new LinkedList<>();
		linkls.add("hello");
		linkls.add("java");

		for (String s : linkls) {
			System.out.println(s);
		}

		for (int i = 0; i < linkls.size(); i++) {
			String s = linkls.get(i);
			System.out.println(s);
		}

		Iterator<String> itls = linkls.iterator();
		while (itls.hasNext()) {
			String s = itls.next();
			System.out.println(s);
		}

	}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值