一篇文章让你精通:java集合讲解(二,LinkList)
Posted 韶光不负
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一篇文章让你精通:java集合讲解(二,LinkList)相关的知识,希望对你有一定的参考价值。
学习完ArrayList,就准备准备学习它兄弟LinkList了,它们是兄弟所以说有很多的方法是相同的。这样的目的是方便程序员记住它们,下面就让我们来看看它吧!
一篇文章让你精通:java集合讲解(二,ArrayList)
亲,可以先学习一下ArrayList再来比较它们区别
LinkList
特点:采用双向链表的存储方式
优点:添加与删除元素时,效率高(前提是必须先低效率查询,如果插入与删除在头部或者尾部可以减少查询次数)
缺点:遍历元素与随机访问元素,效率低
注意:和ArrayList想比,不变的是方法名称与执行结果,变化的是底层的数据结构(数组为双向链表)与操作方式改变(如remove()方法:节点指向发生改变)
LinkList实现来List<>接口,还实现了Deque接口(说明LinkList,可以作为线性表,栈,队列来使用)。也说明方法比ArrayList的方法更多。
add() | 末尾添加元素, 数组能自动装箱:就是数组封装。普通数据类型——>包装类 可以使用一个参数或者二个,一个时,添加元素,二个时,第一个参数:索引,第二个,添加元素 |
addAll(对象) addAll(下标,对象) | 复制添加对象全部元素,默认在后面添加 当有二个参数后,表示在下标后添加对象全部元素。 |
remove() | 当输入的是对象时,删除对象,当输入的是对下标,删除下标, |
el1.removeAll(el2) | 在el1中删除el2中相同的元素。 |
list.retainAll(list2); | 在list中查找与list2相同的元素 |
get() | 获取指定索引,返回的是一个对象。 |
set(index,value) | 二个参数,第一个为下标,第二个为修改值 |
clear() | 清空数组 |
contains(value) | 判断是否存在value值,返回布尔值 |
indexOf(value) | 查找value的下标索引 |
isEmpty() | 判断数组是否为空。 |
size() | 查看数组中真实存储的元素个数。与数组的length()方法返回不同 |
toString() | 遍历数组 |
import java.util.LinkedList;
public class Test {
public static void main(String[] args) {
LinkedList<Integer> list=new LinkedList();
//增加
list.add(1);
list.add(2);
list.add(2,100);
//list.addAll();
//删除
list.remove(1);
list.clear();
list.add(1);
list.add(2);
//查看
list.indexOf(1);
list.size();
int ele=list.get(1);
System.out.println(ele);
//修改
list.add(2,100);
//toString方法,遍历数组
System.out.println(list.toString());
//方法1,for循环
for (int i = 0; i <list.size() ; i++) {
int elem2= (int) list.get(i);
System.out.println(i+"是"+elem2);
}
//方法2,for-each循环,必须使用对象输出
for (Object elem3:list){
System.out.println(elem3);
}
//方法4,Lambda表达式+流程式编程(JDK1.8提供)
list.forEach((i)-> System.out.println(i));
// list.forEach(System.out::println); 第二种写法
}
}
addFirst | 头添加 |
addLast | 尾添加 |
getFirst() | 获取元素 |
removeFirst() | 头删除 |
removeFirst() | 取出集合中元素 |
removeLast() | 取出集合中元素,只不过是倒序输出 |
//添加方法--注意该方法为链表添加头结点,所以后面添加的为链表的头元素
list.addFirst(20);
list.addLast(30);
//获取元素
System.out.println(list.getFirst());
//删除元素
System.out.println(list.removeFirst());
//取出LinkedList集合中所有元素
while(!list.isEmpty()) {
System.out.println(list.removeFirst());
//link.removeLast() 倒序输出
}
在什么情况下使用ArrayList与LinkList?
ArrayList:按照索引随机访问,遍历集合
LinkList:添加数据与删除数据多的情况下。
以上是关于一篇文章让你精通:java集合讲解(二,LinkList)的主要内容,如果未能解决你的问题,请参考以下文章