Java语言学习(八):集合类框架

    Java中提供了各种数据集合类,这些类主要用于保存复杂结构的数据。下面将介绍常用的几种集合类的用法。

    ArrayList集合可以看做一个动态的数组,比普通数组更加灵活,更适合保存未知数量的数据。它突破了普通数组固定长度的限制,可以随时向数组中添加和移除元素,而且不受类型的限制,可以添加任意类型的元素值或对象。如下:

//声明集合类型
ArrayList<String> arrList1 = new ArrayList<String>();
arrList1.add("Bob");
arrList1.add("Cily");
//不声明集合类型
ArrayList arrList2 = new ArrayList();
arrList2.add("Angle");
arrList2.add(66);
arrList2.add(null);
arrList2.add(true);
arrList2.add(arrList1);
//遍历
for(int i=0;i<arrList2.size();i++){
    System.out.println(arrList2.get(i));
}

    输出为:

Angle
66
null
true
[Bob, Cily]

    通过上面的例子可以看出:ArrayList集合的初始化既可以声明类型,也可以忽略。当声明类型时,只能添加同类型的元素;当不声明类型时,不受类型的限制。在遍历时,get()方法获取元素,get()获取的是Object类型,虽然可以通过toString()转为String类型,但由于元素类型不一致,不能全部都转化,容易报错,比如空值,需要大家注意。

    在开发中,常见的操作有:添加元素、删除元素、遍历、集合大小、是否包含某个元素等,接着上面的例子:

//删除元素
arrList2.remove(null);
//是否包含某个元素
boolean isHave = arrList2.contains("Angle");
int ret = arrList2.indexOf("Angle");

    关于ArrayList集合的其他用法这里不做详述了,可以自行查看。

    List<T>泛型集合表示可通过索引访问对象的强类型代表,它提供用于对列表进行搜索、排序和操作的方法,相对于ArrayList,List<T>泛型集合在大多数情况下执行的更好且是类型安全的。如下:

List<String> list = new ArrayList<String>();
list.add("Hello");
list.add("World");

    它的操作基本和ArrayList集合一致。

    Map集合可以保存键值映射关系,具体实现有很多,其中常见的有:HashMap是最常用的映射集合,它只允许一条记录的键为null,但不限制集合中值为null的数量;TreeMap集合将对集合中的键值排序,默认为升序。Map集合常用操作有:添加键值对put()、获取键对应的值get()、获取键的Set集合keySet()、遍历等,如下:

//初始化:指定键值各自的类型
Map<String,String> map = new HashMap<String,String>();
//添加键值对
map.put("1", "BeiJing");
map.put("2", "ShangHai");
map.put("3", "ShenZhen");
//获取键对应的值
System.out.println(map.get("1"));
//遍历
for(String key : map.keySet()){
   System.out.println(key+" : "+map.get(key));
}

    输出为:

BeiJing
3 : ShenZhen
2 : ShangHai
1 : BeiJing

    上面通过for循环遍历的方式是很常见的,注意分清key和value,当然还有其他的遍历方式,如迭代器遍历:

Iterator<String> it = map.keySet().iterator();
while(it.hasNext()){
    String key = it.next();
    System.out.println(key+" : "+map.get(key));
}

    Map排序一般通过比较器实现,像TreeMap集合默认升序,这里不做详述了,感兴趣的可以自行查看。

    TreeSet集合属于Set集合的子类,Set集合不允许有重复的元素。如下不重复随机数组排序实例:

TreeSet<Integer> set = new TreeSet<Integer>();
Random ran = new Random();
int count = 0;
while(count < 10){
   //添加100以内的随机整数
   boolean ret = set.add(ran.nextInt(100));
   if(ret)
       count++;
}
//创建大小相等的数组
Integer[] array = new Integer[set.size()];
//获取集合中的数组
set.toArray(array);
//遍历输出数组元素
for(int value : array)
   System.out.print(value+" ");

    输出的是10个按升序排序的整数。

    好了,以上概括的是开发中常用的几种集合类,希望帮到大家。

猜你喜欢

转载自my.oschina.net/u/3747963/blog/1858071