java集合框架(Java Collection Framework,简称JCF)是由一组类和接口组成的。其主要功能就是用来将储存的数据以某种特定的结构组织,并以特定的方式访问。其目的就是提供一个处理对象集合的通用框架,减少程序员处理不同对象集合是的编码量。

  集合类中的一些区别,一是是否支持重复元素,二是包含的元素是否有序,三是集合类中元素是否能为null元素。所以集合将对象分为了三种类型:

    Set(集):对象容器中的对象没有顺序,并且不能重复。

    List(列表):对象容器中的对象按照索引顺序排序,并且可以有重复的对象。

    Map(映射):对象容器中的元素包含着一对“键对象(Key)-值对象(Value)”映射,其中键对象不能重复,值对象可以重复。

  Set接口继承了Collection接口。set集合包含许多方法。下面我们用HashSet来说明Set的特征:

package pkg;

import java.util.*;

public class HashSetDemo{
    public static void main(String[] args) {
     /*new 一个HashSet对象,泛型是<String>*/ Set
<String> set = new HashSet<String>(); String str1 = "123"; String str2 = "234"; String str3 = "345"; String str4 = "456"; set.add(str1); set.add(str2); set.add(str3); set.add(str4);
//通过foreach遍历
for (String string : set) { System.out.println(string); } } }

代码中遍历的结果是随机的,代码中遍历的元素是没有顺序的。这便体现了Set中的特征。

  List接口也是继承于Collection接口的,因为List中的元素是有序的,所以我们可以通过元素的位置(也就是索引)来直接引用元素。List接口中的ArrayList和数组类似,表示一组输入索引的元素,区别在于ArrayList没有固定的大小,长度可变。我们来看看ArrayList的操作:

import java.util.*;

public class ArrayListDemo {
    public static void main(String[] args) {
        //new 一个ArrayList对象
        List list = new ArrayList();
        //添加元素
        list.add(1);
        list.add("abc");
        list.add(10);
        list.add(new Integer(4));
        //根据索引删除元素
        list.remove(0);
        //重置元素
        list.set(0, 22);
        for(int i=0;i<list.size();i++){//size是求ArrayList的长度
            System.out.println(i + "=" + list.get(i));//get是显示ArrayList中的元素
        }
    }
}

  再有就是map接口,在map中键(key)和值(value)是一一对应的,通过指定的键,可以找到对应的唯一的值。HashMap是基于哈希算法的map接口实现的,将键保存在哈希表中进行维护,键是唯一的。但是HashMap并不保证键是以特定的顺序排列。下面我们看看HashMap的基本用法:

import java.util.*;

public class HashMapDemo {
    public static void main(String[] args) {
        //new 一个HashMap对象
        Map<String,String> map = new HashMap<String,String>();
        //在Map接口中是用put方法添加键值对的
        map.put("a1", "abc");
        map.put("b1", "12");
        map.put("S0001", "张三"+"  男");
        //删除
        map.remove("a1");
        //使用iterator遍历
        Set<String> keys = map.keySet();
        for(Iterator<String> i = keys.iterator();i.hasNext();){
            String key = i.next();
            String value = map.get(key);
            System.out.println(key + "=" +value);
        }
    }
}

  以上就是集合中关于Set、List、Map的基本概念和操作。最后在说说泛型,泛型在代码中用<E>表示(其中E只是个占位符),泛型就是允许在定义类或者接口时指定类型形式参数,这个类型形式参数将在声明变量、创建对象时确定(即传入的实际参数)。通过泛型将参数类型化后,我们就可以强迫程序在编译期就检查从集合中取得的数据类型,以达类型安全的目的,并省去从集合取出数据在转型的动作。