------- 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. 创建和运行shell脚本程序

    转载请标明http://www.cnblogs.com/winifred-tang94/ 要创建一个shell脚本程序,首先新建一个文本文件,然后在这个文本文件中按照shell编程规则输入shell命 ...

  2. js库之art.dialog

    自适应内容 artDialog的特殊UI框架能够适应内容变化,甚至连外部程序动态插入的内容它仍然能自适应,因此你不必去考虑消息内容尺寸使用它.它的消息容器甚至能够根据宽度让文本居中或居左对齐——这一切 ...

  3. HDU 4737 A Bit Fun

    题意:定义F(i,j)为数组a中从ai到aj的或运算,求使F(i,j)<m的对数. 思路:或运算具有单调性,也就是只增不减,如果某个时刻结果大于等于m了,那么再往后一定也大于等于m.所以可以用两 ...

  4. Note_Master-Detail Application(iOS template)_04_ YJYMasterViewController.h

    //YJYMasterViewController.h #import <UIKit/UIKit.h> @classYJYDetailViewController; #import < ...

  5. C/C++整数除法以及保留小数位的问题

    题目描述 Given two postive integers A and B,  please calculate the maximum integer C that C*B≤A, and the ...

  6. struts2中form提交到action中的中文参数乱码问题解决办法(包括取中文路径)

    我的前台页是这样的: <body>      <form action="test.action" method="post">     ...

  7. 一个由印度人编写的VC串口类

    http://www.cnblogs.com/lwngreat/p/4098374.html 软件介绍 一个由印度人编写的VC串口类(也是一种VC串口控件),他还配合这个类写了VC 串口通信方面的一些 ...

  8. swift系统学习第一章

    第一节:变量,常量,类型推断,字符,字符串 //swift学习第一节 /* 变量 常量 类型推断 字符 字符串 */ import UIKit //变量 var str = "swift&q ...

  9. 学习进度条<第一周>

    所花时间(包括上课):8小时(上课4,编程0.5,写博客1,读书2.5) 代码量:90行 博客量:4篇 了解到的知识点:什么是BUG                 哪怕有几万分之一的概率也要考虑安全 ...

  10. 一、什么是WPF?

    一.什么是WPF? Windows Presentation Foundation(以前的代号为“Avalon”)是 Microsoft 用于 Windows 的统一显示子系统,它通过 WinFX 公 ...