zoukankan      html  css  js  c++  java
  • java 中LinkedList的学习

    Java中,所有链表实际上都是双向链表的,即每个结点还存放在着指向前驱结点的引用。

    LinkedList中的contains方法检测某个元素是否出现在链表中。

    LinkedList类提供了一个用来访问某个特定元素的get方法,但是其效率并不高。

    eg:

    LinkedList<String> list=new LinkedList<>();

    for (int i=0;i<List.size();i++)

    list.get(i);

    绝对不应该使用这种让人误解的随机访问方法来遍历链表,每次查找一个元素都要从列表的头部重新开始搜索,

    LinkedList对象根本不做任何缓存位置信息的操作。

    故建议:避免使用以整数索引表示链表中位置的所有方法。如果需要对集合进行随机访问,就是用数组或ArrayList,而不要使用链表。

     1 import java.util.*;
     2 public class LinkedListTest {
     3 
     4     public static void main(String[] args)
     5     {
     6         List<String> a=new LinkedList<>();
     7         a.add("Amy");
     8         a.add("Carl");
     9         a.add("Erica");
    10         
    11         List<String> b=new LinkedList<>();
    12         b.add("Bob");
    13         b.add("Doug");
    14         b.add("Frances");
    15         b.add("Gloria");
    16         
    17         ListIterator<String> aIter=a.listIterator();
    18         Iterator<String> bIter=b.iterator();
    19         
    20         while (bIter.hasNext())
    21         {
    22             if (aIter.hasNext()) aIter.next();
    23             aIter.add(bIter.next());
    24         }
    25         System.out.println(a);
    26         
    27         bIter=b.iterator();
    28         while (bIter.hasNext())
    29         {
    30             bIter.next();
    31             if (bIter.hasNext())
    32             {
    33                 bIter.next();
    34                 bIter.remove();
    35             }
    36         }
    37         System.out.println(b);
    38         
    39         a.removeAll(b);
    40         
    41         System.out.println(a);
    42     }
    43 }
  • 相关阅读:
    vector的erase函数
    结构体定义容易混淆的地方
    JavaScript重点知识
    JS中预解析案例分析
    浏览器console控制台不显示编译错误/警告
    强烈推荐一款强大的公式编辑器软件AxMath
    DIV+CSS布局
    CSS-常见属性
    CSS-定义样式表
    CSS-使用CSS样式的方式
  • 原文地址:https://www.cnblogs.com/xh0102/p/5265372.html
Copyright © 2011-2022 走看看