• ArrayList和LinkedList


    ArrayList,LinkedList

    首先提一下LinkedList,ArrayList的定义概念:

    ArrayList:
    ArrayList其实是包装了一个数组 Object[],当实例化一个ArrayList时,一个数组也被实例化,当向ArrayList中添加对象是,数组的大小也相应的改变。

    优点:

          快速随即访问 你可以随即访问每个元素而不用考虑性能问题,通过调用get(i)方法来访问下标为i的数组元素。

    缺点:
          向其中添加对象速度慢 当你创建数组是并不能确定其容量,所以当改变这个数组时就必须在内存中做很多事情。
    操作其中对象的速度慢 当你要想数组中任意两个元素中间添加对象时,数组需要移动所有后面的对象。
    LinkedList
    LinkedList是通过节点直接彼此连接来实现的。每一个节点都包含前一个节点的引用,后一个节点的引用和节点存储的值。当一个新节点插入时,只需要修改其中保持先后关系的节点的引用即可,当删除记录时也一样。

    优点:

          操作其中对象的速度快 只需要改变连接,新的节点可以在内存中的任何地方

    缺点:

         不能随即访问 虽然存在get()方法,但是这个方法是通过遍历接点来定位的所以速度慢。

    Note:数据结构中的顺序存储和链式存储

    接下来,记录一下LinkedList基本的常用的用法:

    1、获取链表的第一个和最后一个元素
        LinkedList<String> lList = new LinkedList<String>();  
        lList.add("1");  
        lList.add("2");  
        lList.add("3");  
        System.out.println("链表的第一个元素是 : " + lList.getFirst());  
        System.out.println("链表最后一个元素是 : " + lList.getLast());

    2.遍历获取链表元素  
    for (String str: lList) {  
          System.out.println(str);  
        }  

    3.从链表生成子表
        List subl = lList.subList(1, 4);  
        System.out.println(subl);  
        lst.remove(2);  
        System.out.println(lst);  
        System.out.println(lList);  

    4.添加元素:如果不指定索引的话,元素将被添加到链表的最后.
        LinkedList list = new LinkedList();  
        list.add("A");  
        list.add("D");  
        list.addFirst("X");     
        list.addLast("Z");      
        System.out.println(list);

    5.删除元素
        LinkedList list = new LinkedList();  
        list.add("A");  
        list.add("B");  
        list.add("C");  
        list.add("D");  
        list.removeFirst();  
        list.removeLast();  
        System.out.println(list);  

    6.将LinkedList转换成ArrayList
    ArrayList<String> arrayList = new ArrayList<String>(linkedList);  
        for (String s : arrayList) {  
          System.out.println("s = " + s);  
        }  

    7.删掉所有元素:清空LinkedList
    lList.clear();

    8.删除列表的首位元素
        Object object = lList.removeFirst();  
        System.out.println(object + " has been removed");  
        System.out.println(lList);  
        object = lList.removeLast();  
        System.out.println(object + " has been removed");  
        System.out.println(lList);  

    9.根据范围删除列表元素
        lList.subList(2, 5).clear();  
        System.out.println(lList);  

    10.删除链表的特定元素
        System.out.println(lList);  
        System.out.println(lList.remove("2"));//删除元素值=2的元素  
        System.out.println(lList);  
        Object obj = lList.remove(2);  //删除第二个元素  
        System.out.println(obj + " 已经从链表删除");  
        System.out.println(lList);  

    11.将LinkedList转换为数组,数组长度为0
        String[] my = theList.toArray(new String[0]);  
        for (int i = 0; i < my.length; i++) {  
          System.out.println(my[i]);  
        }  

    12.将LinkedList转换为数组,数组长度为链表长度
        String[] my = theList.toArray(new String[theList.size()]);  
        for (int i = 0; i < my.length; i++) {  
          System.out.println(my[i]);  
        }  

    13.查找元素位置
    System.out.println(lList.indexOf("YZR"));  
        System.out.println(lList.lastIndexOf("Lyf"));  

    14.替换元素
        System.out.println(lList);  
        lList.set(3, "Replaced");//使用set方法替换元素,方法的第一个参数是元素索引,后一个是替换值  
        System.out.println(lList);  

    15.确认链表是否存在特定元素
        if (lList.contains("4")) {  
          System.out.println("LinkedList contains 4");  
        } else {  
          System.out.println("LinkedList does not contain 4");  
        }  

    16.根据链表元素生成对象数组
    Object[] objArray = lList.toArray();  
    for (Object obj: objArray) {  
       System.out.println(obj);  
    }  
    最后记录一下ArrayList的常用属性和方法:

    1.Count属性和Capacity属性

       Count属性是目前ArrayList包含的元素的数量,这个属性是只读的。
       Capacity属性是目前ArrayList能够包含的最大数量,可以手动的设置这个属性,但是当设置为小于Count值的时候会引发一个异常。

    2.Add

       Add方法用于添加一个元素到当前列表的末尾

    3.AddRange

       AddRange方法用于添加一批元素到当前列表的末尾

    4.Remove

       Remove方法用于删除一个元素,通过元素本身的引用来删除

    5.RemoveAt

       RemoveAt方法用于删除一个元素,通过索引值来删除

    6.RemoveRange

       RemoveRange用于删除一批元素,通过指定开始的索引和删除的数量来删除

    7.Insert

       Insert用于添加一个元素到指定位置,列表后面的元素依次往后移动

    8.InsertRange

       InsertRange用于从指定位置开始添加一批元素,列表后面的元素依次往后移动

    9.Clear

       Clear方法用于清除现有所有的元素

    10.Contains

       Contains方法用来查找某个对象在不在列表之中

    11.TrimSize

       这个方法用于将ArrayList固定到实际元素的大小,当动态数组元素确定不在添加的时候,可以调用这个方法来释放空余的内存。

    12.ToArray

       这个方法把ArrayList的元素Copy到一个新的数组中。

    END

  • 相关阅读:
    Android APK瘦身方法小结
    快速了解Android重要机制
    Android 画笔Paint
    android 图片凸出
    金钱转换
    WPF属性与特性的映射(TypeConverter)
    XMAL 中x名称控件的Auttribute
    AtCoder Grand Contest 012 B
    scau 17967 大师姐唱K的固有结界
    Centos7开机自动启动服务和联网
  • 原文地址:https://www.cnblogs.com/Francis-YZR/p/4883811.html
Copyright © 2020-2023  润新知