ArrayList,Vector,LinkedList
在java.util包中定义的类集框架其核心的组成接口有如下:
·Collection接口:负责保存单值的最大父接口
|-List子接口:允许保存重复元素,数据的保存顺序就是数据的增加顺序;
|-Set子接口:不允许保存重复元素,并且内部的元素可以进行调整
·Map接口:提供key与value的匹配信息
·输出接口: Iterator、ListIterator、Enumeration
结论:所有的集合保存数据的目的都是为了输出
·Collection 保存数据的目的纯粹只是为了输出,所以最关注的就是增加数据和输出数据的操作
·Map 保存数据的目的是为了根据key查找value,是为了查找准备的
package com.wzy.list; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Vector; class A { A(String name,int id){ this.name = name; this.id = id; } String name; int id; @Override public boolean equals(Object obj) { return (this.name.equals(((A)obj).name))&&(this.id==((A)obj).id); } @Override public String toString() { return name+" : "+id; } } public class Test { public static void main(String[] args) { /* Vector比ArrayList老,现在基本上都用ArrayList * 两者用法类似 * ArrayList(90%) vs Vector(10%) * 推出时间:jdk1.2 jdk1.0 * 性能: 异步,性能高 同步,性能低 * 安全性: 不 安全 安全<synchronized> * 输出: Iterator, Iterator, * ListIterator, ListIterator, * forEach forEach * Enumeration * * ArrayList vs LinkedList * 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 * */ List<A> list = new ArrayList<A>(); // List<A> v = new Vector<A>(); // List<A> l = new LinkedList<A>(); list.add(new A("a",12)); list.add(new A("b",123)); list.add(new A("c",121)); list.add(new A("d",43)); System.out.println(list.size()); //想移除对象,必须重写equals方法;如果移除字符串可以直接移除,不用重写equals list.remove(new A("b",123)); System.out.println(list.size()); list.forEach(System.out::println); } }
本文来自博客园,作者:wzyy,转载请注明原文链接:https://www.cnblogs.com/wwzyy/p/5542490.html