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;
}
@Override
public 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
 
 
 

Java API —— ArrayList类 & Vector类 & LinkList类的更多相关文章

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

    本文转自http://my.oschina.net/zzw922cn/blog/491631 一.ArrayList ArrayList是一个可以处理变长数组的类型,这里不局限于“数”组,ArrayL ...

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

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

  3. java 中 ArrayList LinkedList Vector 三者的异同点

    1.ArrayList和Vector都是基于数组实现的,所以查询速度很快,增加和删除(非最后一个节点)速度慢: Vector是线程安全的,ArrayList不是. 2.LinkedList 是一个双向 ...

  4. 比较Java数组,ArrayList,LinkedList,Vector 性能比较

    public class PerformanceTester { public static final int TIMES=100000; public static abstract class ...

  5. ArrayList 、Vector、 LinkList

    public class TestList {     public static void init(List list)     {         if(list!=null)          ...

  6. Java——(五)Collection之List集合、ArrayList和Vector实现类

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.List集合 List集合代表一个元素有序.客重复的集合,集合中每个元素都有其对应的顺序索引 ...

  7. 集合(一)Collection、List、ArrayList和Vector

    一.Collection 集合存放在java.util包中,可以看作是集成好的数据结构,供你调用,十分方便,集合经常拿来和数组对比,其实我觉得没啥可比性,不过还是简单来看看它们的区别: 1.数组长度固 ...

  8. ArrayList、Vector、LinkedList的区别联系?

    1.ArrayList.Vector.LinkedList类都是java.util包中,均为可伸缩数组. 2.ArrayList和Vector底层都是数组实现的,所以,索引数据快,删除.插入数据慢. ...

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

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

随机推荐

  1. 世界级Oracle专家Jonathan Lewis:我很为DBA们的未来担心(图灵访谈)

    部分节选 图灵社区:如果您的子女对计算机科学感兴趣,你会让他们选什么具体的方向呢? JL:我的孩子对计算机科学一点都不感兴趣,甚至对科学都没什么兴趣.他们主修的都是艺术.如果要我给其他的人建议的话,我 ...

  2. WPF-控件-ListView

    <Window x:Class="DataTemplate2.MainWindow" xmlns="http://schemas.microsoft.com/win ...

  3. 从零开始学ios开发(十八):Storyboards(下)

    这篇我们完成Storyboards的最后一个例子,之前的例子中没有view之间的切换,这篇加上这个功能,使Storyboards的功能完整呈现.在Storyboards中负责view切换的东西叫做“s ...

  4. [MVC] - 异步调用后台的常用方法。

    1. 直接调用Action @Html.Action("GetTopArticle", "Home") 2. 通过url, 并用Jquery异步加载. < ...

  5. C++ 字符串相关函数

    <转>自:http://zhidao.baidu.com/question/173202165.html 首先就是memcpy表头文件: #include <string.h> ...

  6. 高效开发Android App的10个建议(转)

    假如要Google Play上做一个最失败的案例,那最好的秘诀就是界面奇慢无比.耗电.耗内存.接下来就会得到用户的消极评论,最后名声也就臭了.即使你的应用设计精良.创意无限也没用. 耗 电或者内存占用 ...

  7. Ubuntu 下为 Idea 创建启动图标.

    默认情况下,ubuntu将自动安装的软件快捷方式保存在/usr/share/applications目录下,如果我们要创建桌面快捷方式,需要在该目录下创建一个名为“Idea.desktop”的文件.通 ...

  8. Javascript数据类型之Undefined和null

    Javascrip中的数据类型分为原始数据类型(primitive type)和对象数据类型(object type). 原始数据类型 原始数据类型包括:数字.字符串.布尔值.null.undefin ...

  9. Chrome浏览器下调试SASS

    网上说的方案各有各的说法,尝试多个才找到有效方案,为避免后来者麻烦,现在讲讲如何调试 笔者ruby版本为3.4.19,因为sass文件的编译是需要ruby环境的,使用sass前需要先安装! 第一步(核 ...

  10. linux使用:vi编辑器

    初学linux,目前是概念多于操作,所以记录下一些操作: 编辑某个文件():vi 文件名 编辑后保存退出::wq 编辑后不保存退出: :q! 参数:-R 只读模式 -x 文件加密(vim命令下使用) ...