当前位置:   article > 正文

java中的List,ArrayList和LinkedList集合

java中的List,ArrayList和LinkedList集合

List集合
void add(int index, E element)

Inserts the specified element at the specified position in this list (optional operation).

在此集合中的指定位置插入指定元素

E remove(int index)

Removes the element at the specified position in this list (optional operation).

删除指定索引处的元素,并返回被删除的元素 

E set(int index, E element)

Replaces the element at the specified position in this list with the specified element (optional operation).

修改指定索引处的元素 ,修改成功返回原来的数据

E get(int index)

Returns the element at the specified position in this list.

返回指定索引处的元素 

  1. public class java {
  2. public static void main(String[] args) {
  3. List<String>list=new ArrayList<>();//List是一个抽象类
  4. //List 有序,可重复,有索引
  5. //add
  6. list.add("java1");
  7. list.add("java2");
  8. list.add("java3");
  9. System.out.println(list);
  10. list.add(1,"java4");
  11. System.out.println(list);//[java1, java4, java2, java3]
  12. //remove
  13. System.out.println(list.remove(1));//java4
  14. //get
  15. System.out.println(list.get(0));
  16. //set,返回被修改的数据
  17. System.out.println(list.set(0, "java20"));//java1
  18. System.out.println(list);//[java20, java2, java3]
  19. }
  20. }

 List集合的遍历:


1 for循环(List集合有索引)

2 迭代器

3 for循环增强

4 Lambda表达式

  1. public class test {
  2. public static void main(String[] args) {
  3. List<String>list=new ArrayList<>();
  4. list.add("java1");
  5. list.add("java2");
  6. list.add("java3");
  7. System.out.println(list);
  8. //for循环
  9. for(int i=0;i<list.size();i++)
  10. {
  11. System.out.println(list.get(i));
  12. }
  13. //迭代器
  14. Iterator<String> iterator = list.iterator();
  15. while(iterator.hasNext())
  16. {
  17. String next = iterator.next();
  18. System.out.println(next);
  19. }
  20. //增强for循环
  21. for(String s:list)
  22. {
  23. System.out.println(s);
  24. }
  25. //Lambda表达式
  26. list.forEach(new Consumer<String>() {
  27. @Override
  28. public void accept(String s) {
  29. System.out.println(s);
  30. }
  31. });
  32. list.forEach(s-> System.out.println(s));
  33. list.forEach(System.out::println);
  34. }
  35. }

ArrayList集合的底层原理

基于数组实现的

特点:

查询数据快:(注意:是根据索引查询数据块)

删除效率低:可能需要把后面的大量数据往前移动

添加效率低:将后面大量数据后移动

ArrayList适合根据随机索引取数据(高效)或者数据不是很大的时候

不适合数据量大很大,又频繁的增删数据

LinkedList集合的底层逻辑

基于双向链表实现的

提点:

查询满,增删块,但是对首尾元素的增删改查的速度是极快的

public void addFirst(E e)

Inserts the specified element at the beginning of this list.

public void addLast(E e)

Appends the specified element to the end of this list. 

public E getFirst() 

Returns the first element in this list.

public E getLast()

Returns the last element in this list. 

public E removeFirst()

Removes and returns the first element from this list. 

从链表中返回第一个元素,并且删除

public E removeLast()

Removes and returns the last element from this list. 

 用于创建队列

  1. public class test {
  2. public static void main(String[] args) {
  3. LinkedList <String>queue=new LinkedList<>();
  4. //入队
  5. queue.addLast("java1");
  6. queue.addLast("java2");
  7. //出队
  8. System.out.println(queue.removeFirst());//java1
  9. System.out.println(queue.removeFirst());//java2
  10. }
  11. }

用于创建栈

  1. public class test2 {
  2. public static void main(String[] args) {
  3. LinkedList<String>stack=new LinkedList<>();
  4. //入栈
  5. /*stack.addFirst("java1");
  6. stack.addFirst("java2");*/
  7. stack.push("java1");
  8. stack.push("java2");
  9. //出栈
  10. /* System.out.println(stack.removeFirst());//java2
  11. System.out.println(stack.removeFirst());//java1*/
  12. System.out.println(stack.pop());//java2
  13. System.out.println(stack.pop());//java1
  14. }
  15. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/392266
推荐阅读
相关标签
  

闽ICP备14008679号