您的位置:首页 > 职场人生

集合总结-01-----黑马程序员

2013-09-02 17:35 211 查看
ASP.Net+Android+IOS开发------期待与您交流
 

<集合框架>
<集合框架--集合的体系及其概述>

 

在描述之前我们先来看看集合框架:



集合概述:

  生活中,会有很多容器,酒瓶子,饮料,茶具

  酒瓶子: 白酒,啤酒,红酒,黄酒

  饮料: 脉动,拿铁,咖啡

  茶具: 茶叶,水

 容器的共同点:存储

 容器的不同点:存储方式不一样,取出方式也不一样

 java中的容器,集合就是一种容器,数组

 集合的存储特点,取出特点,java将集合分成了两大派系

 集合框架:存储,和获取

 集合和数组的区别

   |-- 数组可以存储基本数据类型,可以存储对象

   |-- 集合,只存储对象,不存储基本数据类型

   |-- 数组的长度是固定的

   |-- 集合的长度是可变的

   |-- 数组中提供了微乎其微的方法

   |-- 集合提供了大量的方法,来操作集合

1. Collection 集合的顶层接口

  |-- add(对象) 向集合中存储对象,add()方法的参数设计是Object

  |-- int size() 返回集合中元素的个数

  |-- clear() 清空集合中的元素

  |-- boolean contains(Object) 比较对象是否在集合中,在就返回真

  |-- boolean remove(Object) 删除集合中的元素,删除成功返回真

  |-- addAll(Collection ) 添加一批元素,将一个集合中的元素,添加到另一集合

  |-- boolean containsAll(Collection )判断一个集合是否在另一个集合中,全部的元素

  |-- boolean removeAll(Collection )删除两个集合相同的元素

  |-- boolean retainAll(Collection )获取交集,存储两个集合中相同的元素,元集合不变时返回false

2. 取出结合中的元素,取出方式有一个通用的方法,就是迭代器

   迭代器是取出集合中元素的方法   必须要会****************

   Iterator  iterator()

     |-- boolean hasNext() 判断集合中是否有下一元素

     |-- Object next() 返回集合中的下一个元素

     |-- remove() 移除集合中的元素

使用Iterator取出元素:

package cn.itcast.collection;
import java.util.*;
public class IteratorDemo {

/**
* @param args
*/
public static void main(String[] args) {
Collection col = new ArrayList();
col.add("abedfc1");//Object obj = new String("abc");
col.add("abcasdasdasd2");
col.add("abwesrytrewehtrwqec3");
/*
* 使用迭代器,取出集合中元素的步骤
*  1. 通过集合自己的方法 iterator返回迭代器对象
*  2. 建立循环 while  for
*    条件是什么,就是迭代器的hasNext()方法
*  3. 调用迭代器的next()方法,返回集合中的下一个元素
*/
//		System.out.println(col);
Iterator it = col.iterator();
for(;it.hasNext();){
System.out.println("for====="+it.next());
}
//Iterator it = col.iterator();
while(it.hasNext()){
//String s = (String)it.next();
//System.out.println(s.length());
System.out.println("while====="+it.next());
}
}

}


 

3. 集合中,存储自定义对象

   |-- 强制类型转换,存储的时候,已经将对象提示为了Object类型

   |-- next()方法,只能出现一次

4. List集合

  |-- 这是一个有序集合(存储的顺序和取出的顺序是一致的)

  |-- 这个集合中的存储的元素,可以重复

  |-- 这个集合中的存储的元素,都有索引

  |-- List集合中的特有方法

  |-- Object get(int index)可以根据元素的索引,获取集合中的元素,支持for循环,就像是遍历数组一样

  |-- add(int index ,Object o)指定的位置上插入元素

  |-- addAll(int index, Collection  c)  

  |-- remover(int index) 按照索引,删除集合中的元素,返回被删除掉的元素

  |-- subList(start end) 获取集合中的一部分,包含头不包含尾,返回新集合

5. ListIterator -- List特有迭代器,Set Map不具备

  |-- 通过List集合返回这个特有迭代器,listIterator

  |-- 迭代集合的过程中,使用这个特有迭代器,可以对集合进行增,删,改的操作,不会出现异常

  |-- add()  添加元素

  |-- remove()移除元素

  |-- set()修改元素

  |-- 反向迭代集合hasPrevious()==hasNext()    previous() == next() ,现正向,在反向

 6. ArrayList--使用频率很高的一个类

  |-- 这个集合,是List派系,具有Collection和List中的全部内容

  |-- 这个集合,底层数据结构是数组结构,可变数据结构

  |-- 每次50%递增,特点的查询快,增删慢

  |-- 线程不安全,执行效率高

ArrayList的使用:

package cn.itcast.collection;
/*
* 集合中的根接口Collection中的方法
* 接口不能建立对象,找子类去
*/
import java.util.*;
public class CollectionDemo {

public static void main(String[] args) {
method_2();
//
}
/*
* Collection中的remove()方法
*/
private static void method_2(){
Collection col = new ArrayList();
col.add("abc1");
col.add("abc2");
col.add("abc3");
col.add("abc4");
System.out.println("原始集合==="+col);
boolean b = col.remove("abc");
System.out.println("b="+b);
System.out.println("删除后的集合==="+col);
}

/*
* Collection中的contains方法
* 判断集合是是否有这个元素,返回值是 boolean
*/
private static void method_1(){
Collection col = new ArrayList();
col.add("abc1");
col.add("abc2");
col.add("abc3");
col.add("abc4");
boolean b = col.contains("aBc2");
System.out.println("b="+b);

b = !!col.isEmpty();
System.out.println("b="+b);
}

private static void method(){
//接口引用,指向自己的实现类对象,多态
Collection col = new ArrayList();//建立了一个集合容器
/*集合中只存储对象,不存储基本数据类型
boolean add(E e)
add()方法在java工程师们,设计的时候,会知道后期我们存储什么对象吗
所以add(Object)方法的参数,Object
*/
col.add("abc1");
col.add("abc2");
col.add("abc3");
col.add("abc4");
System.out.println(col);//只是为了演示,实际开发不能用  [abc1, abc2, abc3, abc4]
//打印语句中,默认调用对象的toString()方法,覆盖Object中的toString()
int size = col.size();
System.out.println(size);
col.clear();
System.out.println(col);
/*
* add()
* size()
* 运行的是Collection中的,还是ArrayList中的
*/
}

}


 

 7. LinkedList-- 链表

  |-- 这个集合,是List派系,具有Collection和List中的全部内容

  |-- 这个集合,底层数据结构是链表结构

  |-- 特点:查询慢,增删块

  |-- LinkedList 线程不安全,执行效率高

  |-- LinkedList中的特有方法

    |-- addFirst()元素插入开头

    |-- addLast() 元素插入在结尾

    |-- E getFirst() 返回此列表的第一个元素。 

    |-- E getLast()  返回此列表的最后一个元素

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

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

 8. Vector  线程安全执行效率低不常用

  |-- 出现在集合框架之前,

  |-- 从1.2开始,实现List接口

  |-- 在没有集合框架之前,在java语言中,存储对象只能依靠Vector

  |-- 底层结构也是数组结构,但是他的扩展率100%

  |-- 线程安全,执行效率低

 9. LinkedList练习 *****

  |-- 实现堆栈队列

  |-- 堆栈:

     数据的先进后出

  |-- 队列

     数据的先进先出

代码的实现:

package cn.itcast.collection;
/*
* 实现数据的堆栈,队列
* 定义工具类,实现数据的出入功能
*  1. 定义LinkedList引用
*  2. 构造方法中,创建LinkedList对象
*/

import java.util.*;

class DuiZhanDuiLie{
private LinkedList list = null;
DuiZhanDuiLie(){
list = new LinkedList();
}
//定义存储对象的方法
public void add(Object obj){
list.add(obj);
}
//定义获取对象的方法
public Object get(boolean x){
if(x)
return list.removeFirst();
else
return list.removeLast();
}

//定义判断集合中是否为空的方法
public boolean isEmpty(){
return !list.isEmpty();
}
}

public class LinkedListTest {
public static void main(String[] args) {
DuiZhanDuiLie dl = new DuiZhanDuiLie();
dl.add("abc1");
dl.add("abc2");
dl.add("abc3");
dl.add("abc4");
while(dl.isEmpty()){
System.out.println(dl.get(false));
}
}

}


 

ASP.Net+Android+IOS开发------期待与您交流
 详细请查看:http://edu.csdn.net
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  黑马程序员