zoukankan      html  css  js  c++  java
  • ArrayList-VS-LinkedList

    ArrayList 是List接口的实现类;底层的数据结构是数组,而LinkedList底层数据结构是双向循环链表。

      所以在查询时ArrayList效率高,增删时LinkedList高。由于List中有索引,可以在指定位置插入。在iterator迭代器取元素时,在调用Arraylist中的iterator()返回的其实是Iterator接口实例, Iterator it = new Str();

    而Str是ArrayList的一个内部私有类,实现了Iterator接口,所以有next(),hasNext(),..方法。而ListIterator 是Iterator的子接口。在remove()或contain()方法中调用的是ArrayList中的equals比较对象是否存在。可以通过重写看到。

    public class ArrayListTest {

    public static void main(String[] args) {

    List list = new MyList();

    list.add(new Person5("haha",34));
    list.add(new Person5("haha",34));
    list.add(new Person5("haha",34));
    //System.out.println(list.remove(new Person5("haha",34)));
    System.out.println(list.remove(new Person5("haha",34)));

    ListIterator it =list.listIterator();
    while(it.hasNext()){
    Person5 p = (Person5)it.next();
    System.out.println(p.getName()+"--------"+p.getAge());
    }
    }

    }

    class Person6 {
    private String name;
    private int age;
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public int getAge() {
    return age;
    }
    public void setAge(int age) {
    this.age = age;
    }
    public Person6(String name, int age) {
    super();
    this.name = name;
    this.age = age;
    }

    public int hashCode(){
    System.out.println("----hashCode------");
    return this.age;

    }

    public boolean equals(Object o){
    Person5 p =(Person5)o;
    System.out.println(this.name+"------equals---"+p.getName());
    if(!(p instanceof Person5))
    return false;
    return this.name.equals(p.getName());
    }

    }

    class MyList extends ArrayList{

    @Override
    public boolean remove(Object o) {
    // TODO Auto-generated method stub
    System.out.println("调用了remove方法----");
    return super.remove(o);
    }


    }

  • 相关阅读:
    Java一次读取文本文件所有内容
    java Socket多线程聊天程序
    输出1-100内的质数(素数)
    random.nextInt()与Math.random()基础用法
    【bash】今天你坑队友了吗
    【awk】按小时切割日志
    python获取aliyun ECS实例
    记一次优化ansible inventory的小例子
    Apache Flume入门指南[翻译自官方文档]
    django入门-自定义管理界面-part7
  • 原文地址:https://www.cnblogs.com/daxiong225/p/4588375.html
Copyright © 2011-2022 走看看