栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA集合——List系列(ArrayList、LinkedList)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA集合——List系列(ArrayList、LinkedList)

个人简介

大家好,我是翰慧腾。一名正在努力学JAVA的大一小白,本文章为初学的笔记,希望各位多多指教。欢迎点赞+收藏+留言还在犹豫吗?就做自己吧!李

一、List系列

List系列有ArrayList、linkedList类;其特点最主要的就是有序、可重复、有索引。有序就是存储和取出的元素顺序一致,有索引就是可以通过索引操作元素,重复就是存储的元素可以重复。

List特有方法:代码演示

package Stickto;

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

public class List_00 {

	public static void main(String[] args) {
		// 用多态形式创建一个List对象
		List l=new ArrayList<>();
		//为List对象添加一些元素
		l.add("JAVA");
		l.add("python");
		l.add("HTML");
		l.add("javascript");
		//在某个索引处添加元素
		l.add(2,"C");
		System.out.println(l);//在索引值为2的地方是C元素
		//用索引值删除元素,返回值是删除的元素
		System.out.println(l.remove(2));//结果:C
		//通过索引值获取该位置的元素
		System.out.println(l.get(1));//结果:python
		//修改索引位置的元素
		l.set(0, "java");//把JAVA改为java,返回值是原来元素
		System.out.println(l);//结果:[java, python, HTML, javascript]
	}

}

List集合的遍历方式:代码演示:

package Stickto;

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

public class List_01 {

	public static void main(String[] args) {
		List l=new ArrayList<>();
		l.add("小明");
		l.add("小刚");
		l.add("小王");
		l.add("小韩");
		//1.for循环遍历
		for(int i=0;iSystem.out.println(s));
	}

}

ArrayList类:底层是基于数组实现的,查询元素快,增删相对慢。第一次创建集合并添加第一个元素的时候,在底层创建一个默认长度为10的数组。存满数据会进行扩容(1.5倍)

linkedList类:底层基于双链表实现的,查询元素慢,增删首尾元素是非常快的。

linkedList独有方法(体现在First Last):因为linkedList方法解决首位元素是非常方便的

package Stickto;

import java.util.linkedList;
//数据结构可以根据现实一些情况理解
public class linkedList_00 {

	public static void main(String[] args) {
		//数据结构之栈
		linkedList l=new linkedList<>();
		l.addFirst("第一颗子弹");
		l.addFirst("第二颗子弹");
		l.addFirst("第三颗子弹");
		l.addFirst("第四颗子弹");
		l.addFirst("第五颗子弹");
		System.out.println(l);//结果:[第五颗子弹, 第四颗子弹, 第三颗子弹, 第二颗子弹, 第一颗子弹]
		System.out.println(l.getFirst());//结果:第五颗子弹。此处并不会影响集合l
		System.out.println(l.removeFirst());//出栈。结果:第五颗子弹
		System.out.println(l.removeFirst());//出栈。结果:第四颗子弹
		System.out.println(l.removeFirst());//出栈。结果:第三颗子弹
		System.out.println(l.removeFirst());//出栈。结果:第二颗子弹
		//队列
		linkedList s=new linkedList<>();
		s.addLast("第一颗子弹");
		s.addLast("第二颗子弹");
		s.addLast("第三颗子弹");
		s.addLast("第四颗子弹");
		System.out.println(s);
		//出队
		System.out.println(s.removeFirst());//第一颗子弹
		System.out.println(s.removeFirst());//第二颗子弹
		System.out.println(s.removeFirst());//第三颗子弹
	}

}

补充:集合的并发修改异常问题

代码演示:

package Stickto;

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

public class List_002 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		List l=new ArrayList<>();
		l.add("JAVA");
		l.add("小王");
		l.add("小明");
		l.add("JAVA");
		//迭代器删除元素,注意要用迭代器对象去remove,不能用集合.remove,否则会报错
		Iterator it=l.iterator();
		while(it.hasNext()) {
			String ele=(String) it.next();
			if("JAVA".equals(ele)) {
				//l.remove("JAVA");//会出现如下的报错
	
				it.remove();
			}
		}
		System.out.println(l);//结果:[小王, 小明]
	
	}

}

通常删除元素:用上述代码中演示的方法,迭代器的方法删除元素(注意不是用集合的remove方法,是用迭代器的remove方法);使用for循环删除元素,但是要从最后一个元素开始删除,否则会出现删除不干净的情况。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785065.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号