------- android培训java培训、期待与您交流!
----------

Collection :

|--List:元素是有序的,元素可以重复。因为该集合体系有索引。

        |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。

        |--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。

        |--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。

    |--Set:元素是无序,元素不可以重复。

List:

    特有方法。凡是可以操作角标的方法都是该体系特有的方法。

 



    add(index,element); 在列表的指定位置插入指定元素

addAll(index,Collection); 将指定 collection 中的所有元素都插入到列表中的指定位置

import java.util.ArrayList;

public class ListDemo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println(al); al.add(1,"04");
System.out.println(al); ArrayList al1 = new ArrayList(); al1.add("05");
al1.add("06");
System.out.println(al1); al.addAll(1,al1);
System.out.println(al);
}
}

删 

    remove(index); 移除列表中指定位置的元素

import java.util.ArrayList;

public class ListDemo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println(al); al.remove(1);
System.out.println(al); }
}

set(index,element); 用指定元素替换列表中指定位置的元素

import java.util.ArrayList;

public class ListDemo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println(al); al.set(1,"04");
System.out.println(al); }
}



    get(index): 返回列表中指定位置的元素。

subList(from,to); 返回列表中指定的之间的部分,包含头不包含尾

listIterator(); 返回此列表元素的列表迭代器(按适当顺序)。

int indexOf(obj):获取指定元素的位置。

listIterator(int index); 返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; /**
*
* 获取集合中元素的方法演示
*
*/ public class ListDemo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println(al); List sub = al.subList(0,2);
System.out.println(sub); System.out.println("01 对应的角标是:"+al.indexOf("01")); for (int i=0;i<al.size();i++)//方法一
{
System.out.println(al.get(i));
} for (Iterator it = al.iterator();it.hasNext(); )//方法2
{
System.out.println(it.next());
} }
}

List集合特有的迭代器。ListIterator是Iterator的子接口。

 

        在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生ConcurrentModificationException异常。所以,在迭代器时,只能用迭代器的方法操作元素,可是 Iterator方法是有限的,只能对元素进行判断,取出,删除的操作,如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。该接口只能通过List集合的listIterator方法获取。

import java.util.ArrayList;
import java.util.ListIterator; /**
*
* ListIterator演示
*
*/ public class ListDemo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println(al); ListIterator li = al.listIterator();
System.out.println(li.hasNext());//判断后面有没有元素
System.out.println(li.hasPrevious());//判断前面有没有元素 //把集合里面的元素替换成另一种元素
while (li.hasNext())
{
Object obj = li.next(); if (obj.equals("02"))
li.set("04");
} System.out.println(li.hasNext());//判断后面有没有元素
System.out.println(li.hasPrevious());//判断前面有没有元素
System.out.println(al);
}
}
import java.util.ArrayList;
import java.util.Iterator; /**
* 去除ArrayList中的重复元素
* 定义一个临时容器储存
* 如果不相同存入,相同就不存
* 便利完成之后返回
*/
public class ArrayListTest
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("01");
al.add("04");
al.add("02");
System.out.println(al+"------"+al.size()); System.out.println(SingleElement(al));
} //定义一个函数,返回一个ArrayList集合,参数ArrayList。功能是去除ArrayList中的重复元素.
public static ArrayList SingleElement(ArrayList al)
{
ArrayList arrayBuffer = new ArrayList(); for (Iterator it = al.iterator();it.hasNext(); )
{
Object obj = it.next(); if (!arrayBuffer.contains(obj))
{
arrayBuffer.add(obj);
}
}
return arrayBuffer; } }
<span style="font-size:14px;"><strong></strong></span><pre class="java" name="code">import java.util.ArrayList;
import java.util.Iterator; /**
* 将自定义元素存到ArrayList结构中去,并去掉重复元素
* 比如:存人对象。同姓名同年龄,视为同一个人。为重复元素。
*
* 思路:
* 对人描述,将数据封装进人对象。
* 定义容器,将人存入。
* 取出。
* List集合判断元素是否相同,依据是元素的equals方法。
*/
public class ArrayListTest
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add(new Person("zhangsan",13));
al.add(new Person("lisi",13));
al.add(new Person("zhangsan",13));
al.add(new Person("zhangsan",15));
al.add(new Person("lisi",13));
al.add(new Person("lisi",12)); al = singleElement(al); for (Iterator it = al.iterator();it.hasNext(); )
{
Person p = (Person)it.next();
System.out.println(p.getName()+"------"+p.getAge());
}
} //定义一个函数,返回ArrayList,参数ArrayList。函数功能去除ArrayList集合中的重复元素
public static ArrayList singleElement(ArrayList al)
{
ArrayList arrayBuffer = new ArrayList(); for (Iterator it = al.iterator();it.hasNext(); )
{
if (!arrayBuffer.contains(it.next()))
{
arrayBuffer.add(it.next());
}
}
return arrayBuffer;
}
} //声明一个Person对象,具有年龄和名字的属性
class Person
{
private String name;
private int age; Person(String name,int age)
{
this.name = name;
this.age = age;
} public boolean equals(Object obj)
{
if(!(obj instanceof Person))
return false;
Person p = (Person)obj;
return this.name.equals(p.name) && this.age == p.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;
}
}

LinkedList:特有方法:

addFirst(); 将指定元素插入此列表的开头。

addLast();  将指定元素添加到此列表的结尾。

getFirst(); 返回此列表的第一个元素。

getLast(); 返回此列表的最后一个元素。

 

get方法获取元素,但不删除元素。如果集合中没有元素,会出现NoSuchElementException

 

removeFirst();  移除并返回此列表的第一个元素。

removeLast(); 移除并返回此列表的最后一个元素。

remove方法获取元素,但是元素被删除。如果集合中没有元素,会出现NoSuchElementException

import java.util.LinkedList;

/**
*
* LinkedList演示
*
*/ public class ListDemo
{
public static void main(String[] args)
{
LinkedList ll = new LinkedList(); ll.add("02");
ll.addFirst("01");
ll.addLast("03");
System.out.println(ll); System.out.println(ll.getFirst());
System.out.println(ll.getLast());
System.out.println(ll); System.out.println(ll.removeFirst());
System.out.println(ll.removeLast());
System.out.println(ll); //打印移出方式
while (!ll.isEmpty())
{
System.out.println(ll.removeLast());
}
}
}

 在JDK1.6出现了替代方法: 

 

offerFirst(); 在此列表的开头插入指定的元素。

offerLast(); 在此列表末尾插入指定的元素。

 

peekFirst();  获取但不移除此列表的第一个元素;如果此列表为空,则返回 null

peekLast(); 获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null

获取元素,但不删除元素。如果集合中没有元素,会返回null。

 

pollFirst(); 获取并移除此列表的第一个元素;如果此列表为空,则返回 null

pollLast(); 获取并移除此列表的最后一个元素;如果此列表为空,则返回 null

获取元素,但是元素被删除。如果集合中没有元素,会返回null。

堆栈和队列: 

堆栈:先进后出  如同一个杯子。

队列:先进先出 First in First out  FIFO 如同一个水管。

import java.util.LinkedList;

/**
*
* 用LinkedList模拟一个堆栈结构的
*
*/ public class DuiZhanDemo
{
public static void main(String[] args)
{
DuiZhan dz = new DuiZhan(); dz.myAdd("01");
dz.myAdd("02");
dz.myAdd("03"); while (!dz.isNull())
{
System.out.println(dz.myGet());
}
}
} //堆栈结构:先进后出
class DuiZhan
{
private LinkedList link; DuiZhan()
{
link = new LinkedList();
} public void myAdd(Object obj)
{
link.addFirst(obj);
} public Object myGet()
{
return link.removeFirst();
} public boolean isNull()
{
return link.isEmpty();
}
}

------- android培训java培训、期待与您交流!
----------

黑马程序员——JAVA基础之List集合的更多相关文章

  1. 黑马程序员——JAVA基础之Map集合

    ------- android培训.java培训.期待与您交流! ---------- Map集合: 该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 和Set很像,其实Set底层就是使用了M ...

  2. 黑马程序员——JAVA基础之set集合

    ------- android培训.java培训.期待与您交流! ---------- Set:       元素是无序(存入和取出的顺序不一定一致),元素不可以重复.    Set接口中常用的类: ...

  3. 黑马程序员——JAVA基础之简述集合collection

    ------- android培训.java培训.期待与您交流! ---------- 集合: 为什么出现集合类? •  面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对 ...

  4. 黑马程序员——JAVA基础之Vector集合

    ------- android培训.java培训.期待与您交流! ---------- 基本已被淘汰 枚举就是Vector特有的取出方式.枚举和迭代器很像.其实枚举和迭代是一样的.   因为枚举的名称 ...

  5. 黑马程序员----java基础笔记中(毕向东)

    <p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...

  6. 黑马程序员Java基础班+就业班课程笔记全发布(持续更新)

    正在黑马学习,整理了一些课程知识点和比较重要的内容分享给大家,也是给自己拓宽一些视野,仅供大家交流学习,大家有什么更好的内容可以发给我 ,现有黑马教程2000G  QQ 1481135711 这是我总 ...

  7. 黑马程序员----java基础笔记上(毕向东)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...

  8. 黑马程序员——JAVA基础之泛型和通配符

    ------- android培训.java培训.期待与您交流! ---------- 泛型:            JDK1.5版本以后出现新特性.用于解决安全问题,是一个类型安全机制. 泛型好处: ...

  9. 黑马程序员——JAVA基础之简述面向对象,类,变量,匿名对象

    ------- android培训.java培训.期待与您交流! ---------- 面向对象: 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将 ...

随机推荐

  1. windows8.1安装

    不小心下载了英文版的windows8.1的操作系统,要添加中文语言,结果遇到不少问题. 第一:安装中文语言包: 可以在控制面板-添加语言中添加,这个方法好像只能在线更新,那速度,不能忍.还可以下载离线 ...

  2. hdu2476 区间dp

    //Accepted 300 KB 31 ms //区间dp 思路完全网上看的 #include <cstdio> #include <cstring> #include &l ...

  3. mysql 1067 启动错误!!!

    图二:服务器启动不成功 -- 解决方法

  4. 什么php?

    PHP是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用.PHP的语法借鉴吸收了C语言.Java和Perl等流行计算机语言的特点,易于一般程序员学习.PHP的主要目标是允许网络开 ...

  5. 数据库类II

    <!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...

  6. grunt 执行

    几天以前,我决定开始启用一个CSS预处理器,找了很久,我选择了SASS并且尝试着去安装它.但是这似乎不是一件简单的事,在安装过程中出现了许多让我始料不及的问题,我很沮丧,但查找了很多资料,我终于找到了 ...

  7. PHP_Const

    PHP_Const 常量 规则: 1 总是大写 2 A-Z 及 从127-255的ASCII字符 3 全局范围 4 用define函数定义 5 只能包含标量数据 如Boolean integer fl ...

  8. IO 流 定义

    一.什么是流? 流就是字节序列的抽象概念,能被连续读取数据的数据源和能被连续写入数据的接收端就是流,流机制是Java及C++中的一个重要机制,通过流我们可以自由地控制文件.内存.IO设备等数据的流向. ...

  9. jquery 轮播图

    slider.js (function(){ /** parent //父容器 changeTime //每次间隔几秒切换下一条 leaveTime //鼠标从小图上离开过后几秒继续切换 index ...

  10. /bin/bash^M: bad interpreter: 没有那个文件或目录