• 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);
    }


    }

  • 相关阅读:
    laydate日期插件弹出闪退和多次闪退问题解决
    IconFont 图标的3种引用方式
    jquery操作select下拉框的多种方法(选中,取值,赋值等)
    jquery获取select选中项 自定义属性的值
    Centos查看端口占用、开启端口
    IaaS,PaaS,SaaS 的区别
    IOS手机使用Fiddler抓包(HTTPS)(二)
    Android手机使用Fiddler抓包(HTTPS)(二)
    Fiddler使用详解(一)
    python2.x和python3.x中raw_input( )和input( )区别
  • 原文地址:https://www.cnblogs.com/daxiong225/p/4588375.html
Copyright © 2020-2023  润新知