最近我又在研究Java语言,这是第五次还是第六次学习Java的集合类,你也许会惊讶为什么这么多次?哈哈,因为之前的我没有记录下来,忘记了,当然最主要还是觉得自己毅力不够,没有坚持。那么,这次我将换一种方式进行Java的框架类学习:一是只学习常用的部分,二是一边学习一边写成博客,并用代码进行验证。
集合类又叫容器类,容器是什么?容器就是装东西的,它在Java中就是装对象的,这时候我就纳闷儿了:数组不就可以存储各种各样的对象吗,又增加一个什么集合类,岂不是多此一举?于是我就开始查阅资料,终于得到一个结果,使用数组的确可以存储对象,但是如果对象数目无法确定的情况下,数组是不实用的,因为数组的长度是不变的,然而呢,集合类可以存储任意类型的对象,并且长度可以变。因此,我认为集合类可以完全取代数组,除非一些特别简单的情况,可以考虑使用数组,其余时候都应该首先考虑使用集合类。
集合类按照存储结构(数据结构中又叫做物理结构)分为:单列集合、双列集合。
哦,对了,所有的集合类都位于java.util包中,使用之前请务必import一下。
接下来看看常用的集合框架图:(引用自网络)
Collection:是单列集合的根接口。常用的两个子接口分别是List、Set。
List的特点就是:元素有序,元素可以重复。主要实现类ArrayList、LinkedList、Vector(如今很少用)。
Set的特点就是:元素无序,而且不能重复。主要实现类HashSet、TreeSet。
Map:是双列集合的根接口,双列集合主要用来存储键值对。主要实现类HashTable、HashMap、TreeMap。
我先学习的是单列集合,从根接口Collection开始。根接口定义了很多单列集合通用的方法,主要作用:在集合中添加元素、删除元素、获取集合中元素个数等。用实例对常用方法进行说明:(使用ArrayList举例)
package testCollection; import java.util.*; //测试单列集合根接口Collection public class CollectionTest00 { public static void main(String[] args) { Collection coll = new ArrayList(); Person person = new Person("仗剑走天涯", 23); person.toString(); //向集合中添加一个元素 add() coll.add("ZSY is a beauty!"); coll.add(123); coll.add(person); //获取该集合元素的个数 size() System.out.println("集合元素个数:"+coll.size()+"个"); //判断该集合元素是否为空 if(!coll.isEmpty()) System.out.println("集合不是空!"); else System.out.println("集合是空!"); //判断是否包含某个元素contains(Object o) System.out.println(coll.contains(123)); //删除集合中指定元素remove(Object o) System.out.println(coll.toString()); coll.remove(123); System.out.println(coll.contains(123)); System.out.println(coll.toString()); //删除该集合中的所有元素 coll.clear(); System.out.println(coll.size()); //再次初始化 coll.add("ZSY is a beauty!"); coll.add(123); coll.add(person); System.out.println(coll.size()); //将指定集合中的所有元素添加到该集合中 addAll(Collection c) Collection coll1 = new ArrayList(); coll1.addAll(coll); System.out.println("复制后的: "+coll1); //删除指定集合的所有元素 coll.remove(123); System.out.println("删除前的: "+coll); coll1.removeAll(coll); System.out.println("删除后的: "+coll1); //返回在该集合的元素上进行迭代的迭代器,用于遍历该集合所有元素itrator Iterator it = coll.iterator(); while(it.hasNext()) { Object obj = it.next(); System.out.println(obj); } //增强型for循环,进行遍历 for(Object obj : coll) { System.out.println(obj); } } } class Person{ private String name; private int age; Person(String name,int age) { this.name=name; this.age=age; } public String getName() { return this.name; } public int getAge() { return this.age; } public void setName(String name) { this.name=name; } public void setAge(int age) { this.age=age; } @Override public String toString() { String str = new String("我的名字叫:"+name+";我的年龄:"+age+"岁。"); System.out.println(str); return str; } }
这里,必须隆重给自己介绍一下Itrator接口,它的中文名:迭代器------>实质功能就是用来进行循环遍历所有元素的,它也是集合框架中的一员。对于它的使用方式,常用的格式就是如代码所示:先得到Itrator对象,然后判断集合是否还有下一个元素,用next()方法取出下一个元素,记住规矩:先取后用。
代码中,还用到了增强型for循环,它的格式如下:
for(集合类存储类型 变量名:集合的变量名)
{
执行语句...
}//当然增强型for循环也适用于数组,例如:
int[] a=new int[10]; for(int i=0;i<10;i++) { a[i]=i+4; } for(int b:a) { System.out.println(b); }
集合框架入门上篇,就到这里了,主要分析了单列集合的常用操作。
附:以上程序运行结果: