List集合的子实现类及其特点
2017-11-15 16:07
162 查看
ArrayList: 底层数据结构是数组形式,满足数组结构的特点:查询快,增删慢
从线程安全问题角度看:线程不安全,不同步,执行效率高。
vector: 底层结构是数组形式,查询快,增删慢
从线程安全问题角度看:线程安全,同步,执行效率低
LinkedList:底层数据结构是链接列表,查询慢,增删快
从线程安全问题角度看:线程不安全,不同步,执行效率高。
如果实现多线程程序,一般要是安全的类:
如果在一般的需求中没有指明使用集合去完成,都默认采用ArrayList如果需求中要考虑线程安全,那么使用Vector集合!
Vector的特有功能:
Enumeration接口:向量的组件枚举有两个方法
特有功能:
添加功能:
public void addFirst(E e)//将指定元素插入此列表的开头。
public void addLast(E e)//将指定元素添加到此列表的结尾。
获取功能:
public Object getFirst()//返回此列表的第一个元素
public Object getLast()//返回此列表的最后一个元素。
删除功能:
public Object removeFirst()//移除并返回此列表的第一个元素。
public Object removeLast()//移除并返回此列表的最后一个元素
contains()底层依赖于一个equals()方法,equals()方法是Object类的中的方法,该法默认比较的是对象的地址值是否相同,必须要重写Object中的eqauls()方法,才能比较内容是否相同;
在自定义对象的类中重写Object中的equasl()方法,才能比较成员变量的值是否相同
从线程安全问题角度看:线程不安全,不同步,执行效率高。
vector: 底层结构是数组形式,查询快,增删慢
从线程安全问题角度看:线程安全,同步,执行效率低
LinkedList:底层数据结构是链接列表,查询慢,增删快
从线程安全问题角度看:线程不安全,不同步,执行效率高。
如果实现多线程程序,一般要是安全的类:
StringBuffer,Vector<E>,hashtable<K,V>
如果在一般的需求中没有指明使用集合去完成,都默认采用ArrayList如果需求中要考虑线程安全,那么使用Vector集合!
package _09.homework; import java.util.ArrayList; import java.util.Iterator; public class ArrayListDemo { public static void main(String[] args){ ArrayList<String> array=new ArrayList<String>(); array.add("八百里分麾下之,"); array.add("五十弦翻塞外声,"); array.add("沙场秋点兵!"); Iterator<String>it=array.iterator(); while(it.hasNext()){ String s=it.next(); System.out.print(s); } } }
Vector的特有功能:
public void addElement(E obj)//相当于:add(object e)
public Enumeration<E> elements()//相当于:Iterator iterator()
Enumeration接口:向量的组件枚举有两个方法
boolean hasMoreElements();//相当于:hasNext()
Object nextElement();//相当于:next();
package _09.homework; import java.util.Enumeration; import java.util.Vector; public class VectorDemo { public static void main(String[] args) { Vector<String> v = new Vector<String>(); v.addElement("花好"); v.addElement("月圆"); v.addElement("人长久"); v.addElement("!"); Enumeration<String> en = v.elements(); while (en.hasMoreElements()) { String s = en.nextElement(); System.out.print(s); } } }
特有功能:
添加功能:
public void addFirst(E e)//将指定元素插入此列表的开头。
public void addLast(E e)//将指定元素添加到此列表的结尾。
获取功能:
public Object getFirst()//返回此列表的第一个元素
public Object getLast()//返回此列表的最后一个元素。
删除功能:
public Object removeFirst()//移除并返回此列表的第一个元素。
public Object removeLast()//移除并返回此列表的最后一个元素
public class LinkedListDemo { public static void main(String[] args) { LinkedList link = new LinkedList() ; //添加元素 link.addFirst("明月几时有,") ; link.addFirst("把酒问青天。") ; link.addFirst("不知天上宫阙,") ; link.addFirst("今夕是何年。") /* Object obj = link.getFirst() ; System.out.println(obj); Object obj2 = link.getLast() ; System.out.println(obj2);*/ /*System.out.println("removeFirst:"+link.removeFirst()); System.out.println("removeLast:"+link.removeLast());*/ System.out.println("link:"+link); } }
contains()底层依赖于一个equals()方法,equals()方法是Object类的中的方法,该法默认比较的是对象的地址值是否相同,必须要重写Object中的eqauls()方法,才能比较内容是否相同;
在自定义对象的类中重写Object中的equasl()方法,才能比较成员变量的值是否相同
public class ArrayListTest3 { public static void main(String[] args) { //创建一个ArrayList集合对象 ArrayList array = new ArrayList() ; //2)创建学生对象 Student s1 = new Student("高圆圆", 27) ; Student s2 = new Student("高圆圆", 20) ; Student s3 = new Student("邓超", 29) ; Student s4 = new Student("邓超", 25) ; Student s5 = new Student("黄晓明", 30) ; Student s6 = new Student("高圆圆", 27) ; //将学生对象添加到array集合中 array.add(s1) ; array.add(s2) ; array.add(s3) ; array.add(s4) ; array.add(s5) ; array.add(s6) ; //3)创建一个新集合 ArrayList newArray = new ArrayList() ; //遍历旧集合,获取迭代器对象 Iterator it = array.iterator() ; while(it.hasNext()){ Student s = (Student) it.next() ; //判断新集合中是否包含这些对象 if(!newArray.contains(s)){ //不包含的对象才能添加新集合 newArray.add(s) ; } } //遍历新集合 Iterator it2 = newArray.iterator() ; while(it2.hasNext()){ Student s = (Student) it2.next() ; System.out.println(s.getName()+"---"+s.getAge()); } } }
相关文章推荐
- JAVA集合框架中的常用集合及其特点、适用场景、实现原理简介
- JAVA知识回顾-2(四种引用、HashCode、List实现类的区别、字符的处理、各集合特点)
- [重磅,建议收藏]JAVA集合框架中的常用集合及其特点、适用场景、实现原理简介
- JAVA集合框架中的常用集合及其特点、适用场景、实现原理简介
- JAVA集合框架中的常用集合及其特点、适用场景、实现原理简介
- [重磅,建议收藏]JAVA集合框架中的常用集合及其特点、适用场景、实现原理简介
- 2.Java集合总结系列:List接口及其实现
- JAVA集合框架中的常用集合及其特点、适用场景、实现原理简介
- 参照JDK源码实现一个LinkedList,分析常用的List集合及其适用场景
- Java Collections Framework(JAVA集合框架)中的常用集合及其特点、适用场景、实现原理简介
- List集合的子实现类的特点(ArrayList,Vector,LinkedList),JDK5以后提供的新特性
- 黑马程序员----List集合中的另外两个小弟,Vector LinkedList(实现结构,本身特点,自己的独有方法). 泛型技术:
- 集合工具类之List特点和实现类的详解
- JAVA集合框架中的常用集合及其特点、适用场景、实现原理简介
- List集合根据存储对象的属性字段排序实现
- 黑马程序员:Java基础总结----子接口 List<E>及其实现类
- 9.3-全栈Java笔记:List接口常用实现类的特点和底层实现
- 定义一个List集合并实例化对应的实现类对象。循环输入任意个整数,输入0结束输入循环,对集合中的数据进行从大到小的排序后输出
- [集合框架] List 实现
- jquery实现数组array、集合list、json类型的分页