1、ArrayList类
1)ArrayList类概述
· 底层数据结构是数组,查询快,增删慢
· 线程不安全,效率高
2)ArrayList案例
· 存储字符串并遍历
· 存储自定义对象并遍历
2、Vecor类
1)Vector类概述
· 底层数据结构是数组,查询快,增删慢
· 线程安全,效率低
2)Vector类特有功能
· public void addElement(E obj):添加功能
· public Object elementAt(int index):返回指定索引处的组件
· public Enumeration elements():返回此向量的所有组件
3)Vector案例
· 存储字符串并遍历
· 存储自定义对象并遍历

3、LinkedList类
1)LinkedList类概述        
· 底层数据结构是链表,查询慢,增删快        
· 线程不安全,效率高    
2)LinkedList类特有功能        
· public void addFirst(Object e)及addLast(Object e):在开头处或结尾处添加        
· public Object getFirst()及getLast():获取第一个或最后一个元素        
· public Object removeFirst()及public Object removeLast():移除第一个或最后一个元素并返回被删除的元素    
3)LinkedList案例
· 存储字符串并遍历

· 存储自定义对象并遍历
例子1:
package arraylistdemos;
import java.util.ArrayList;
import java.util.Iterator;
/*** Created by gao on 15-12-15.*/
/** List的子类特点:*         ArrayList:*             底层数据结构是数组,查询快,增删慢*             线程不安全,效率高*         Vector:*             底层数据结构是数组,查询快,增删慢*             线程安全,效率低*         LinkedList:*              底层数据结构是链表,查询慢,增删快*             线程不安全,效率高** 案例:*         使用List的任何子类存储字符串或者存储自定义对象并遍历。** ArrayList的使用。*         存储字符串并遍历*/
public class ArrayListDemo01 {public static void main(String[] args) {//创建集合对象ArrayList  arrayList = new ArrayList();//创建元素对象,并添加元素arrayList.add("believe ");arrayList.add("in ");arrayList.add("yourself ");//遍历Iterator it = arrayList.iterator();while(it.hasNext()){String s = (String)it.next();System.out.println(s);}System.out.println("----------------------");for(int x = 0; x < arrayList.size(); x++){String s = (String)arrayList.get(x);System.out.println(s);}}
}

例子2:

package arraylistdemos;
import java.util.ArrayList;
import java.util.Iterator;
/*** Created by gao on 15-12-15.*/
public class ArrayListDemo02 {public static void main(String[] args) {//创建集合对象ArrayList arrayList = new ArrayList();//创建学生对象Student s1 = new Student("武松", 30);Student s2 = new Student("鲁智深", 40);Student s3 = new Student("林冲", 36);Student s4 = new Student("杨志", 38);//添加元素
        arrayList.add(s1);arrayList.add(s2);arrayList.add(s3);arrayList.add(s4);//遍历Iterator it = arrayList.iterator();while (it.hasNext()) {Student s = (Student) it.next();System.out.println(s.getName() + "---" + s.getAge());}System.out.println("------------");for (int x = 0; x < arrayList.size(); x++) {Student s = (Student) arrayList.get(x);System.out.println(s.getName() + "---" + s.getAge());}}
}

   以上两个例子的添加和遍历方法对Vector和LinkedList都是可行的,下面讲解Vector特有的功能。

4、Vector的特有功能:
1)添加功能
    public void addElement(Object obj) -- add()
2)获取功能
    public Object elementAt(int index) -- get()
    public Enumeration elements() -- Iterator iterator()
    boolean hasMoreElements() -- hasNext()
    Object nextElement() -- next()
3)JDK升级的原因:
  A:安全
  B:效率
C:简化书写
例子3:

package vectordemos;
import java.util.Enumeration;
import java.util.Vector;
/*** Created by gao on 15-12-15.*/
public class VectorDemo01 {public static void main(String[] args) {//创建集合对象Vector v = new Vector();//添加功能v.addElement("hello");v.addElement("world");v.addElement("java");//遍历for(int x = 0; x < v.size(); x++){String s = (String) v.elementAt(x);System.out.println(s);}System.out.println("-------------");Enumeration e = v.elements();while(e.hasMoreElements()){String s = (String) e.nextElement();System.out.println(s);}}
}

5、LinkedList的特有功能:
A:添加功能
public void addFirst(Object e)
public void addLast(Object e)
B:获取功能
public Object getFirst()
public Obejct getLast()
C:删除功能
public Object removeFirst()
public Object removeLast()

例子4:

package linklistdemos;
import java.util.LinkedList;
/*** Created by gao on 15-12-15.*/
public class LinkListDemo01 {public static void main(String[] args) {// 创建集合对象LinkedList link = new LinkedList();// 添加元素link.add("hello");link.add("world");link.add("java");// public void addFirst(Object e)link.addFirst("javaee");// public void addLast(Object e)link.addLast("android");// public Object getFirst()System.out.println("getFirst:"+link.getFirst());// public Obejct getLast()System.out.println("getLast:"+link.getLast());System.out.println("link:"+link);// public Object removeFirst()System.out.println("removeFirst:"+link.removeFirst());// public Object removeLast()System.out.println("removeLast:"+link.removeLast());// 输出对象名System.out.println("link:"+link);}
}

输出结果:

getFirst:javaee
getLast:android
link:[javaee, hello, world, java, android]
removeFirst:javaee
removeLast:android
link:[hello, world, java]
6、实例应用:ArrayList去除集合中字符串的重复值(字符串的内容相同)
方式一:创建新的集合

package exercisedemos;
import java.util.ArrayList;
import java.util.Iterator;
/*** Created by gao on 15-12-15.*/
/** ArrayList去除集合中字符串的重复值(字符串的内容相同)** 分析:*         A:创建集合对象*         B:添加多个字符串元素(包含内容相同的)*         C:创建新集合*         D:遍历旧集合,获取得到每一个元素*         E:拿这个元素到新集合去找,看有没有*             有:不搭理它*             没有:就添加到新集合*         F:遍历新集合*/
public class Exercise01 {public static void main(String[] args) {// 创建集合对象ArrayList array = new ArrayList();// 添加多个字符串元素(包含内容相同的)array.add("hello");array.add("world");array.add("java");array.add("world");array.add("java");array.add("world");array.add("world");array.add("world");array.add("world");array.add("java");array.add("world");// 创建新集合ArrayList newArray = new ArrayList();// 遍历旧集合,获取得到每一个元素Iterator it = array.iterator();while(it.hasNext()){String s = (String) it.next();if(!newArray.contains(s)){newArray.add(s);}}Iterator it2 = newArray.iterator();while (it2.hasNext()){String s = (String) it2.next();System.out.println(s);}}
}

方式二:不能创建新的集合

package exercisedemos;
import java.util.ArrayList;
/*** Created by gao on 15-12-15.*/
/** 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同)* 要求:不能创建新的集合,就在以前的集合上做。*/
public class Exercise02 {public static void main(String[] args) {// 创建集合对象ArrayList array = new ArrayList();// 添加多个字符串元素(包含内容相同的)array.add("hello");array.add("world");array.add("java");array.add("world");array.add("java");array.add("world");array.add("world");array.add("world");array.add("world");array.add("java");array.add("world");// 由选择排序思想引入,我们就可以通过这种思想做这个题目// 拿0索引的依次和后面的比较,有就把后的干掉// 同理,拿1索引...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--; //注意删除后会有一个替位
                }}}for (int x = 0; x < array.size(); x++) {String s = (String) array.get(x);System.out.println(s);}}
}

7、实例应用:去除集合中自定义对象的重复值(对象的成员变量值都相同)
Student类:(重写equals方法)

package exercisedemos;
/*** Created by gao on 15-12-9.*/
public class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = 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;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (!(o instanceof Student)) return false;Student student = (Student) o;if (age != student.age) return false;if (!name.equals(student.name)) return false;return true;}
}

测试类:

package exercisedemos;
import java.util.ArrayList;
import java.util.Iterator;
/*** Created by gao on 15-12-15.*/
/** 需求:去除集合中自定义对象的重复值(对象的成员变量值都相同)** 我们按照和字符串一样的操作,发现出问题了。* 为什么呢?*         我们必须思考哪里会出问题?*         通过简单的分析,我们知道问题出现在了判断上。*         而这个判断功能是集合自己提供的,所以我们如果想很清楚的知道它是如何判断的,就应该去看源码。* contains()方法的底层依赖的是equals()方法。* 而我们的学生类中没有equals()方法,这个时候,默认使用的是它父亲Object的equals()方法* Object()的equals()默认比较的是地址值,所以,它们进去了。因为new的东西,地址值都不同。* 按照我们自己的需求,比较成员变量的值,重写equals()即可。* 自动生成即可。*/
public class Exercise03 {public static void main(String[] args) {// 创建集合对象ArrayList array = new ArrayList();// 创建学生对象Student s1 = new Student("林青霞", 27);Student s2 = new Student("林志玲", 40);Student s3 = new Student("凤姐", 35);Student s4 = new Student("芙蓉姐姐", 18);Student s5 = new Student("翠花", 16);Student s6 = new Student("林青霞", 27);Student s7 = new Student("林青霞", 18);// 添加元素
        array.add(s1);array.add(s2);array.add(s3);array.add(s4);array.add(s5);array.add(s6);array.add(s7);// 创建新集合ArrayList newArray = new ArrayList();Iterator it = array.iterator();while (it.hasNext()) {Student s = (Student) it.next();if (!newArray.contains(s)) {newArray.add(s);}}for (int x = 0; x < newArray.size(); x++) {Student s = (Student)newArray.get(x);System.out.println(s.getName()+"---"+s.getAge());}}
}

输出结果:
林青霞---27
林志玲---40
凤姐---35
芙蓉姐姐---18
翠花---16
林青霞---18

8、实例应用:请用LinkedList模拟栈数据结构的集合,并测试
自定义Stack类:

package exercisedemos;
/*** Created by gao on 15-12-15.*/
import java.util.LinkedList;
/*** 自定义的栈集合*/public class MyStack {private LinkedList link;public MyStack(){link = new LinkedList();}public void add(Object obj){link.addFirst(obj);}//弹出并删除public Object get(){// return link.getFirst();return link.removeFirst();}public boolean isEmpty(){return link.isEmpty();}
}

测试类:

package exercisedemos;
/*** Created by gao on 15-12-15.*/
/** MyStack的测试*/
public class Exercise04 {public static void main(String[] args) {MyStack ms = new MyStack();ms.add("hello");ms.add("world");ms.add("java");while (!ms.isEmpty()){System.out.println(ms.get());}}
}

输出结果:
java
world
hello

转载于:https://www.cnblogs.com/yangyquin/p/5049163.html

Java API —— ArrayList类 Vector类 LinkList类相关推荐

  1. 详解Java中ArrayList、Vector、LinkedList三者的异同点

    转载:https://my.oschina.net/zzw922cn/blog/491631 一.ArrayList ArrayList是一个可以处理变长数组的类型,这里不局限于"数&quo ...

  2. Java API接口统一格式返回结果类

    废话不多说,直接正文. 首先,我们需要定义规则(返回的格式).如http的返回状态码 404,500,200等.我们都知道404是找不到资源,200是正常的.由此可以知道,每一个状态码都有一个对应的说 ...

  3. Java中ArrayList和Vector的区别

    首先想说的是: Vector是在Collections API之前就已经产生了的, 而ArrayList是在JDK1.2的时候才作为Collection framework的一部分引入的. 它们都是在 ...

  4. ArrayList、Vector、LinkedList的特点和区别

    ArrayList.Vector.LinkedList类均在java.util包中,均为可伸缩数组. 1)ArrayList和Vector都是基于存储元素的Object[] array来实现的,它们会 ...

  5. 14 Java集合(集合框架+泛型+ArrayList类+LinkedList类+Vector类+HashSet类等)

    本篇主要是集合框架基础和List集合,Map集合等等后续更 集合 14.1 集合框架 14.1.1 概念 14.1.2 集合架构 14.2 Collection接口 14.2.1 常用方法 14.3 ...

  6. 很多人搞不清楚的两个类Vector,ArrayList

    Vector,ArrayList_哪一个更好 Vector 和 ArrayList的不同 有的时候 Vector更好一些;有的时候ArrayList 更好一些;有的时候你一个也不想用.但愿,你不是在期 ...

  7. List接口实现类-ArrayList、Vector、LinkedList集合深入学习以及源代码解析

    学习List接口实现类 ArrayList  Vector  LinkedList List接口的实现类中最经常使用最重要的就是这三个:ArrayList.Vector.LinkedList. JDK ...

  8. java学习--基础知识进阶第五天--API、 Object类 System类、日期相关类、包装类正则表达式...

    今日内容介绍 u  Object类 & System类 u  日期相关类 u  包装类&正则表达式 第1章 Object类 & System类 1.1 Object类 1.1. ...

  9. java api 第一个类是_JAVA之Object常用API

    [Object类.常用API] 主要内容Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 第一章 Object类 1.1 概 ...

最新文章

  1. QtCreator动态编译jsoncpp完美支持x86和arm平台
  2. 一个类型思考了 8 年,依旧是最好的! | 每日趣闻
  3. 用了那么多年的 Master 分支或因种族歧视而成为历史?
  4. VTK:绘制轴AXES用法实战
  5. “约见”面试官系列之常见面试题之第六十三篇之get和post区别(建议收藏)
  6. php无刷新跳转,用#号实现web页面的无刷新跳转
  7. jfinal分页时使用like
  8. Python 使用pyinstaller将py文件发布成exe程序
  9. 重磅!Google ARCore 和京东 AR 联合举办消费应用创新大赛
  10. 计算机主板性能由什么决定,电脑内存条频率取决于CPU还是主板?
  11. stm8单片机内部存储EEPROM字节读写实例解析
  12. 概率 无穷数列求和公式
  13. win10运行python没有硬编码器_windows下关于python的编解码问题
  14. 苹果恢复出厂设置报4013错误问题
  15. 交互设计师必须知道的五大交互设计流程
  16. 【C语言】案例四十六 点名册(一)
  17. Spring Boot修改启动神图
  18. SIBT SSHT 2023展位火爆抢定中 共燃建筑空间智慧浪潮
  19. Java中接口的理解和使用
  20. 第十二届蓝桥杯--第二场--B-双阶乘

热门文章

  1. 《HTML5+JavaScript动画基础》——2.4 JavaScript对象
  2. 《像计算机科学家一样思考Python(第2版)》——2.7 注释
  3. zabbix自定义用户key
  4. SharePoint2010升级到SharePoint2013操作手册
  5. Silverlight开发之MVVM模式
  6. python文件和路径操作
  7. 百度seo排名规则_百度seo排名优化要点讲解(已帮助5184人)
  8. linux安装jdk笔记
  9. Linux驱动程序中的并发控制
  10. 《基于MFC的OpenGL编程》Part 18 Reading objects from the OBJ File Format