标签:
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只是个占位符),泛型就是允许在定义类或者接口时指定类型形式参数,这个类型形式参数将在声明变量、创建对象时确定(即传入的实际参数)。通过泛型将参数类型化后,我们就可以强迫程序在编译期就检查从集合中取得的数据类型,以达类型安全的目的,并省去从集合取出数据在转型的动作。
标签:
原文地址:http://www.cnblogs.com/gzyfj/p/4438900.html