List(有序)集合以及五种遍历介绍

List(有序)

  • 继 承 C olle c tio n 接 口 , 存 储 一 组 可 重 复 的 有 序 对 象

  • 元 素 顺 序 以 元 素 插 入 的 顺 序 放 置 元 素 , 不 重 新 排 序

  • 通 过 索 引 访 问 数 组 元 素 , 索 引 从 0 开 始

ArrayList : 序列/数组存储 查询快(下标),修改慢(添加元素,删除元素,考虑扩容和数组拷贝的过程)


LinkedList: 列表存储, 查询慢(从头查询),修改快(添加元素,删除元素,只需要修改上一个)

 

 代码示例:

  //(1)List集合:有序
		//创建集合
		ArrayList<String> list = new ArrayList<String>();
		//添加集合
		list.add("六六");
		list.add("李四");
		list.add("王五");
		//删除remove
		list.remove(0);
		//插入add
		list.add(0,"六六二");
		//get
		System.out.println(list.get(2));//王五
		//替换set
		list.set(1,"李小四");//李四替换为了李小四
		//截取subList
		List temp = list.subList(1,3);
		System.out.println("截取:"+temp);
		//indexOf查找
		System.out.println(list.indexOf("六六二"));//下标为0
		//isEmpty() 空位true
		System.out.println(list.isEmpty()); //false
		//清空Set中的所有元素
		//list.clear()

打印结果:

 

 使用List集合注意事项:

  • 可以使用索引访问List集合元素 可以使用for循环遍历List集合
  • List集合中存在的都是Object类对象
  • add(Object o)方法的参数是Object类对象
  • 在通过get(int i)方法获取元素时必须进行强制类型转换
Fruit fruit=(Fruit) list.get(i);
  • 删除集合元素的方法
  • 按索引删除
  • 调用set(int index,Object o)方法改变List集合指定索引的元素时,指定的索引必须是List集合的 有效索引
  • set(int index,Object o)方法不会改变List集合长度

LinkedList类

具有双向链表结构,更方便增、删行为

特有方法:

方法描述
void addFirst(Object o)在链表的首部添加元素
void addLast(Object o)在链表的尾部添加元素
Object getFirst()返回链表的首部元素
Object getLast()返回链表的尾部元素
Object removeFirst()在链表的移除首部元素
Object removeLast()在链表的移除尾部元素

 代码示例:

LinkedList<String> list2 = new LinkedList<String>();
		list2.add("六六");
		list2.add("李四");
		list2.add("王五");
		//删除
		list2.remove(0);//删除了六六
		//void addFirst(Object)
		list2.addFirst("我是开头");
		//void addLast(Object)
		list2.addLast("我是末尾");
		//  Object getFirst()
		System.out.println("让我看看你是:"+list2.getFirst()); //让我看看你是:我是开头
        //Object getLast()
		System.out.println("让我看看你是:"+list2.getLast());  //让我看看你是:我是末尾
		//Object removeFirst()
		list2.removeFirst();   //删除了"我是开头"
		//  Object removeLast()
		list2.removeLast();   //删除了"我是末尾"


		System.out.println("=================================");
		//遍历集合
		for(String a:list2){
			System.out.println(a);
		}

打印结果:

 

ArrayList与LinkedList对比

共同点:

  • 可以容纳所有类型对象,包括null;
  • 元素值可重复
  • 元素按顺序存储

ArrayList类特点:

  • 底层是数组 优点:基于数组实现,读取效率高 缺点:不适合频繁插入和删除操作(频繁产生移动操作)。

LinkedList类特点:

  • 有双向链表实现,任意节点都可方便访问前后节点
  • 优点:增、删操作只针对链表节点指针,不需进行频繁移动
  • 缺点:遍历效率低

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值