collection(容器)上课笔记

                                             collection

                        set    (无序,唯一)                              list   (有序,可重复的)                                    map

 

                     HashSet                              ArrayList          LinkedList                                          HashMap     

为什么要有容器?     

数组的长度一旦指定,程序执行的过程中不能改变、

String[] names = new String[100]();   

正是因为数组有这样的缺陷 才出现了容器,容器的大小可以任意改变,容器的大小是你放了多少数据它就是多大

使用容器的时候要导包:java.util.*

 

例子:Set  set = new HashSet();

         set.add("hello");

         set.add(100);

         set.remove(100);

         System.out.println(set);

 

list 借口中其实就是多出来一些根据索引进行操作的方法:如在指定的索引位置上添加数据,在指定位置上删除数据,替换指定索引位置上添加数据,在指定位置上删除数据,替换指定索引位置上的元素。判断一个元素在容器中出现索引位置

 

例子:List list = new ArrayList();

         list.add(100);

         list.add("hello");

         list.add(2."world");

         list.remove(1);//list.remove("hello");不会自动装箱删除第一次出现的

         list.remove(new Integer(100));// 删除整数位置

 

ArrayList  查找速度比较快而插入很慢  内存地址连续 (容器数据经常用于查找)

LinkedList   查找速度慢,插入较快(更新) 内存地址不连续 (容器数据经常用于更新)

 

 

容器的迭代

iterator(容器的迭代去)接口

所有实现了collection 接口的类都有一个iterator()方法,这个方法会得到一个实现了的iteration接口的类的对象

for(Iterator i = list.iteration();hasNext();){

       object o = i.next();

       System.out.println(o);

}

List虽然有索引,也必须用迭代器,因为这是唯一线程安全的方法。

 

collection类

提供了一系列的方法来对List进行操作

collection.sort(list);排序从小到大,静态的

自己写的类 和他相关的一切规则要自己来指定

 

增强for循环,JAVA,5.0 之后

int[]  nums{1.2.3.4}

for(int n:nums){

  system.out.println(n);

}

(不能方便操作引索,只能用于简单的遍历)

如果增强for循环迭代的是容器的话内部默认使用iteator

泛型。java5.0之后出现的指定当前容器只能放什么类型,并且不能有List<penson> list = new ArrayList<penson>();

父类类型指向子类对象

 

例子:文件夹递归

import java.io*;

import java.util.*;

public class Test{

    public static void main(String args[]){

         show(new File("d:/aaa"),0);

    }

 

    public static void show(File file){

     StringBuffer s = new StringBuffer("");

     for(int i = 0; i<level;i++){

      s.append(" ");

     }

      File[] files = file.listFiles();

      for(int i=0;i<=files.length;i++){

             System.out.println(s + files[i].getName()); 

             if(files[i].isDirectory()){

                   show(files(i),level+1);

             }

       } 

   

    }

}

 

 

posted @ 2013-02-24 00:45  白小白丶  阅读(116)  评论(0编辑  收藏  举报