集合之List子实现类
来源:互联网 发布:淘宝客订单接口 编辑:程序博客网 时间:2024/06/06 18:24
List集合的子实现类的特点:
ArrayList: 底层数据结构是数组的形式,满足数组结构的特点:查询快,增删慢 从线程安全问题来看:线程不安全的,不同步,执行效率高Vector: 底层数据结构是数组的形式,查询快,增删慢 从线程角度看:线程安全的类,同步,执行效率低LinkedList: 底层数据结构是链接列表,特点:查询慢,增删快 从线程角度看:线程不安全的一个类,不同步,执行效率高 如果实现多线程程序,一般要是安全的类: StringBuffer,Vector<E>,hashtable<K,V> synchronized(同步锁对象){ 代码; } 如果在一般的需求中没有指明使用集合去完成,都默认采用ArrayList 如果需求中要考虑线程安全,那么使用Vector集合! 笔试过程中,一些需求用到集合:就是用ArrayList
(1)ArrayList:
底层数据结构是数组的形式,满足数组结构的特点:查询快,增删慢
从线程安全问题来看:线程不安全的,不同步,执行效率高
由于ArrayList是List集合的字实现类,它元素可以重复,并且存储和取出一致
JDK5以后提供了很多特性:
泛型,增强for循环,可变参数,静态导入,自动拆装箱,枚举等
增强for循环
书写格式:
* for(集合或者数组中的数据类型 变量名:集合或者数组的对象名){
* 输出变量名;
* }
*
* 增强for循环的弊端:
* 遍历数组或者集合的时候,数组对象或者集合对象不能为null
* 如果对象为空,一般加上非空判断
*
* 增强for循环的出现就是为了替代迭代器遍历集合的,以后开发中就是用增强for遍历元素
增强for只能进行遍历,无法获取单个元素.
package list;import java.util.ArrayList;import java.util.Iterator;import java.util.ListIterator;/** * 使用ArrayList集合存储自定义对象并遍历 * 几种方式呢: * 1)toArray() * 2)Collection集合的迭代器:Iterator iterator(); * 3)List集合的迭代器:ListIterator listiterator(); * 4)普通for循环:size()和get(int index)相结合 * 5)增强for循环 * @author Apple */public class ForDemo2 { public static void main(String[] args) { // 创建ArrayList集合 ArrayList<Student> array = new ArrayList<Student>(); // 创建学生对象 Student s1 = new Student("高圆圆", 27); Student s2 = new Student("高圆圆", 20); Student s3 = new Student("邓超", 29); Student s4 = new Student("邓超", 25); // 给集合中添加元素 array.add(s1) ; array.add(s2) ; array.add(s3) ; array.add(s4) ; //普通for循环:size()和get(int index)相结合 for(int x =0 ; x < array.size() ; x ++){ Student s = array.get(x) ; System.out.println(s.getName()+"---"+s.getAge()); } System.out.println("-----------------------"); //Collection集合的迭代器:Iterator iterator(); Iterator<Student> it = array.iterator() ; while(it.hasNext()){ Student s = it.next() ; System.out.println(s.getName()+"----"+s.getAge()); } System.out.println("-----------------------"); //List集合的迭代器:ListIterator listiterator(); ListIterator<Student> lt=array.listIterator(); while(lt.hasNext()) { Student st = lt.next() ; System.out.println(st.getName()+"----"+st.getAge()); } System.out.println("-----------------------"); //增强for遍历 for(Student s : array){ System.out.println(s.getName()+"----"+s.getAge()); } }}
ArrayList的应用:集合去重
方法1:创建新集合
如果当前元素不包括在新集合中,则添加到新集合中
//3)创建一个新集合
ArrayList newArray = new ArrayList() ;
//遍历旧集合,获取迭代器对象 Iterator it = array.iterator() ; while(it.hasNext()){ Student s = (Student) it.next() ; //判断新集合中是否包含这些对象 if(!newArray.contains(s)){ //不包含的对象才能添加新集合 newArray.add(s) ; } }
方法2:利用选择排序思想
将后面的元素和前面的元素比较,如果和前一个元素重复则从集合中移除后面索引对应的元素
for(int x = 0 ;x <array.size() -1 ; x ++){ for(int y= x +1 ; y <array.size() ;y++){ //判断 if(array.get(x).equals(array.get(y))){ array.remove(y) ; y -- ; } } }
注意:如果集合存储的是自定义对象,需要重写此自定义类的equals()方法
(2)Vector
package org.westos_02;import java.util.Enumeration;import java.util.Vector;/** * Vector: 底层数据结构是数组的形式,查询快,增删慢 从线程角度看:线程安全的类,同步,执行效率低 特有功能: public void addElement(E obj)------->相当于:add(Object e) public Enumeration<E> elements()----->相当于:Iterator iterator() ; Enumeration<E>接口:向量的组件枚举有两个方法 boolean hasMoreElements():------>相当于:hasNext() Object nextElement():----------->相当于:next(); 源码: synchronized:同步锁(多线程中讲):它就可以保证线程安全! public synchronized void addElement(E obj) {//由同步代码块演变过来的同步方法 modCount++; ensureCapacityHelper(elementCount + 1); elementData[elementCount++] = obj; } * @author Apple */public class VectorDemo { public static void main(String[] args) { //创建一个Vector集合对象 Vector v = new Vector() ; //添加元素 //public void addElement(E obj) v.addElement("hello"); v.addElement("hello"); v.addElement("world"); v.addElement("Java"); //public Enumeration<E> elements()----->相当于:Iterator iterator() ; Enumeration en = v.elements() ; //遍历元素 /** * boolean hasMoreElements():------>相当于:hasNext() Object nextElement():----------->相当于:next(); */ while(en.hasMoreElements()){ //获取元素 String s = (String)en.nextElement() ; System.out.println(s); } }}
(3)LinkedList:
底层数据结构是链接列表,特点:查询慢,增删快
从线程角度看:线程不安全的一个类,不同步,执行效率高
特有功能: 添加功能: public void addFirst(E e)将指定元素插入此列表的开头。 public void addLast(E e)将指定元素添加到此列表的结尾。 获取功能: public Object getFirst()返回此列表的第一个元素 public Object getLast()返回此列表的最后一个元素。 删除功能: public Object removeFirst()移除并返回此列表的第一个元素。 public Object removeLast()移除并返回此列表的最后一个元素。
package org.westos_03;import java.util.LinkedList;/** * LinkedList: 底层数据结构是链接列表,特点:查询慢,增删快 从线程角度看:线程不安全的一个类,不同步,执行效率高 特有功能: 添加功能: public void addFirst(E e)将指定元素插入此列表的开头。 public void addLast(E e)将指定元素添加到此列表的结尾。 获取功能: public Object getFirst()返回此列表的第一个元素 public Object getLast()返回此列表的最后一个元素。 删除功能: public Object removeFirst()移除并返回此列表的第一个元素。 public Object removeLast()移除并返回此列表的最后一个元素。 * @author Apple */public class LinkedListDemo { public static void main(String[] args) { //创建LinkedList集合 LinkedList link = new LinkedList() ; //添加元素 link.addFirst("hello") ; link.addFirst("world") ; link.addFirst("Java") ; //public void addFirst(E e)将指定元素插入此列表的开头 /*link.addFirst("android") ; link.addLast("JavaWeb") ;*/ /** * public Object getFirst()返回此列表的第一个元素 public Object getLast()返回此列表的最后一个元素。 */ /* Object obj = link.getFirst() ; System.out.println(obj); Object obj2 = link.getLast() ; System.out.println(obj2);*/ /** * public Object removeFirst()移除并返回此列表的第一个元素。 public Object removeLast()移除并返回此列表的最后一个元素。 */ /*System.out.println("removeFirst:"+link.removeFirst()); System.out.println("removeLast:"+link.removeLast());*/ //输出集合 System.out.println("link:"+link); }}
- 集合之List子实现类
- List集合的子实现类及其特点
- java 单列集合list及其子实现类
- java程序员从笨鸟到菜鸟之(二十五)集合之List接口的子实现类ArrayList,LinkedList,Vector
- JAVA集合框架之List接口实现类
- java基础学习集合之list实现类 九-3
- java集合框架之List实现类的性能分析
- 第十六篇:JAVA集合框架之List接口实现类
- 集合-List实现类、泛型
- 集合:List实现类ArrayList
- 集合:List实现类Vector
- 集合:List实现类LinkedList
- Java集合Collection接口之List子接口
- Java集合之LinkedList(实现List接口)
- java集合类之List
- java集合类之List
- java集合类之List
- 对集合框架的一些概括总结之collection接口 子接口 子实现类
- 利用反射调用webservice
- 设置elevation后没有用,没有阴影显示
- Material Design控件之Switch|SwitchCompat
- SpringMVC ajax中文乱码的解决办法
- 文章标题
- 集合之List子实现类
- 移动端js控制隐藏输入法键盘
- hud-1301-Jungle Roads-最小生成树-java
- mfc 枚举enum使用例子
- 用树莓派搭建网络摄像头
- 传递主窗口句柄或者控件给其他cpp使用
- Visual Studio 2013 VC++ 数据库的简单使用
- VC操作Excel之基本操作(颜色等)
- SpringMVC form表单传值中文乱码处理