lambda表达式 java 返回的list是对原来的引用还是新建的 java返回list的方法_System


lambda表达式 java 返回的list是对原来的引用还是新建的 java返回list的方法_Java_02

@

目录

  • 🍎一,简介概述
  • 🍎二,常见方法以代码演示
  • 1,创建方法表
  • 2,Java LinkedList
  • 3、ArrayList和LinkedList的区别
  • 4,向LinkedList添加元素
  • 5,访问LinkedList中元素
  • 6,修改LinkedList中元素
  • 7,删除LinkedList中元素
  • 8,LinkedList size
  • 🍎三,遍历
  • 1,for循环遍历
  • 2,增强foreach循环遍历
  • 3,迭代器遍历

🍎一,简介概述

  • LinkedList实现了List接口和Deque接口.
  • 可以看作顺序容器,队列(Queue)和栈(Stack).
  • 队列和栈首选ArrayDeque(当作栈,比Stack快;当作队列,比LinkedList快).
  • 首尾添加或删除元素是常数时间(O(1)),和下标有关的操作为线性时间(O(n)).
  • 为了提高效率,没有使用synchronized,非线程安全.
  • 需要线程安全可以采用:Collections.synchronizedList(new LinkedList<>())对其进行包装.

  Java的LinkedList是一种常用的数据容器,与ArrayList相比,LinkedList的增删操作效率更高,而查改操作效率较低。

  特点:随机访问慢、插入删除速度快


实现

  • 使用双向链表实现.
  • 链表的每个节点使用内部类Node表示.
  • 通过first和last分别指向链表的第一个和最后一个元素.

🍎二,常见方法以代码演示

1,创建方法表

返回值

方法名

描述

boolean

add(E o)

将指定元素追加到此列表的结尾。

void

add(int index, E element)

在此列表中指定的位置插入指定的元素。

boolean

addAll(Collection<? extends E> c)

追加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序。

void

addFirst(E o)

将给定元素插入此列表的开头。

void

addLast(E o)

将给定元素追加到此列表的结尾。

E

get(int index)

返回此列表中指定位置处的元素。

E

getFirst()

返回此列表的第一个元素。

E

getLast()

返回此列表的最后一个元素。

E

set(int index, E element)

将此列表中指定位置的元素替换为指定的元素。

E

remove()

找到并移除此列表的头(第一个元素)。

E

remove(int index)

移除此列表中指定位置处的元素。

E

removeFirst()

移除并返回此列表的第一个元素。

E

removeLast()

移除并返回此列表的最后一个元素。

int

size()

返回此列表的元素数。

void

clear()

从此列表中移除所有元素。

int

indexOf(Object o)

返回此列表中首次出现的指定元素的索引,如果列表中不包含此元素,则返回 -1。

int

lastIndexOf(Object o)

返回此列表中最后出现的指定元素的索引,如果列表中不包含此元素,则返回 -1。

Object[]

toArray()

以正确顺序返回包含此列表中所有元素的数组。

... ...

... ...

... ...

2,Java LinkedList

  LinkedList类与ArrayList 几乎相同 ,也是集合List的实现类,相比ArrayList,其使用场景并不多,但有些时候也能用到。

例如:
创建一个名为lisk的LinkedList对象,该对象将存储字符串:

import java.util.LinkedList; // import the LinkedList class

LinkedList lists = new LinkedList();// 创建 LinkedList对象

泛型:

不指定泛型的容器可以放置任何类型的元素,但是指定泛型的容器只能放置指定类型的元素(以及其子类元素)

import java.util.LinkedList; // import the LinkedList class

LinkedList<String> lists = new LinkedList<String>();// 创建 LinkedList对象

3、ArrayList和LinkedList的区别

  LinkedList类是一个集合,可以包含许多相同类型的对象,就像ArrayList一样。

  LinkedList类具有与ArrayList类相同的所有方法,因为它们都实现了List接口。但是,虽然可以以相同的方式使用ArrayList类和LinkedList类,但是它们的构建方式却大不相同。

  ArrayList和LinkedList的区别有以下几点:

  • ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于链表的数据结构;
  • 对于随机访问get和set,ArrayList要优于LinkedList,因为LinkedList要移动指针;
  • 对于添加和删除操作add和remove,一般情况下LinkedList要比ArrayList快,因为ArrayList要移动数据。一般首选用ArrayList,由于LinkedList可以实现栈、队列以及双端队列等数据结构,所以当特定需要时候,使用LinkedList。

4,向LinkedList添加元素

要将元素添加到LinkedList,需要使用 add()方法

LinkedList lists = new LinkedList();
//在末尾添加元素
lists.add("C");
lists.add("Python");
//将指定的值 添加到集合的指定 下标位置
lists.add(0,"Java");
lists.add(1,"Mysql");

5,访问LinkedList中元素

要访问LinkedList中的元素,请使用 get() 方法并引用索引号:

//获取第一个元素(最早添加的元素)
System.out.println(lists.getFirst());
//获取最后一个元素(最晚添加的元素)
System.out.println(lists.getLast());
//获取指定位置上的元素
System.out.println(lists.get(2));
//输出为
Java
Python
C

注意: 数组索引以0开头:[0]是第一个元素。 [1]是第二个元素,依此类推。


6,修改LinkedList中元素

要修改元素,需要使用 set() 方法并引用索引号:

lists.set(0,"C#");
System.out.println(lists.get(0));
//输出为
C#

7,删除LinkedList中元素

要删除元素,需要使用 remove() 方法并引用索引号:

//删除指定位置上的元素.
lists.remove(0);
//删除首次出现的指定元素.(从前向后查找)
lists.remove("Python");
//删除第一个元素.(非null)
lists.removeFirst();
//删除最后一个元素.(非null)
lists.removeLast();

8,LinkedList size

要找出LinkedList 有多少个元素,需要使用 size 方法:

lists.size()

🍎三,遍历

1,for循环遍历

//直接输出
for (int i = 0; i < lists.size(); i++) {
    System.out.println(lists.get(i));
}

//输出为
Java
Mysql
C
Python

2,增强foreach循环遍历

//直接输出
for (Object values: lists) {
    System.out.println(values);
}

//输出为
Java
Mysql
C
Python

3,迭代器遍历

//建立一个迭代器,并且将List中的元素放进迭代器中
Iterator it = lists.listIterator();
//迭代器的头指针是空的
while (it.hasNext()){
      //每次next,指针都会指向下一个元素
      Object values = it.next();
      System.out.println(values);
}

//输出为	
Java
Mysql
C
Python

✨最后✨

总结不易,希望uu们不要吝啬你们的👍哟(^U^)ノ~YO!!
如有问题,欢迎评论区批评指正😁

lambda表达式 java 返回的list是对原来的引用还是新建的 java返回list的方法_System_03