Java 集合类

集合可以看作是一个容器,比如,所有Java有关的书都可以看作是一个集合。对于集合中的各个对象很容易将其存放到集合中,也很容易将其从集合中取出来,还可以按照一定的顺序将其摆放。Java中提供了不同的集合类,这些集合类具有不同的存储对象的方式,并提供了相应的方法以方便用户对集合进行遍历,添加,删除,以及查找指定的对象。

 

集合类又被称作容器,提到容器大家很自然地就想到了数组,那么集合类和数组有哪些不同之处呢?首先,数组的长度是固定的,而集合的长度是可变的;其次,数组用来存放基本的数据类型,而集合用来存放对象的引用。常用的集合主要分为两大类,Map类和Collection类,Collection类又包括Set类和List类,它们之间的继承关系可以用下面的图来表示:

 

Collection接口是层次结构中的根接口,其构成单位称为元素。Collection接口通常不能直接使用,但提供了添加元素,删除元素,管理数据的方法。从上面的继承图可以看出,Set和List类继承了Collection接口,因此这些方法对Set和List类也是通用的。那么,接下来,我们看看Collection类的常用方法。

 

Collection集合的常用方法主要有以下几种:

boolean add(Object element); 向集合中添加元素  

void clear(); 清空集合

boolean contains(Object o);  判断集合中是否包含某元素

boolean isEmpty();   判断集合中是否有元素

Iterator<E> iterator();  获取集合所依赖的迭代器对象

boolean remove(Object o);   删除集合中某个元素 

int size();  获取集合中元素的个数

Object[] toArray();  将集合转换成数组

 

接下来我们看这些方法的使用。看以下程序:

import java.util.*;
public class CollectionTest01{
 public static void main(String[] args){
   //1.创建集合
   Collection c=new ArrayList();
       //2.添加元素
       c.add(1);  
       c.add(new Integer(100));
       c.add(new Object());  
       Customer cus=new Customer("JACK",20);
       //3.获取元素的个数
   System.out.println(c.size());  //4
   System.out.println(c.isEmpty());  //false
   //4.将集合转换成Object类型的数组
   Object[] objs=c.toArray();
   for(int i=0;i<objs.length;i++){
     System.out.println(objs[i]);
   }
   //5.清空
   c.clear();
   System.out.println(c.size());    //0
   //6.判断集合是否为空
      System.out.println(c.isEmpty());   //true
   
   
 }
}
class Customer{
 String name;
 int age;
 Customer(String name,int age){
   this.name=name;
   this.age=age;
 }
 //重写Object中的toString方法
 public String toString(){
   return "Customer[name="+name+",age="+age+"]";
 }
}

编译后运行输出:

3
false
1
100
java.lang.Object@15db9742
0
true

 

上述代码中,

1.创建集合,这里注意,因为Collection是一个接口,所以不能直接Collection c=new Collection(); 我们可以寻找它下面的一个实现类(参考上面的继承类的图)ArrayList,即Collection c=new ArrayList();

2.添加元素, c.add(1);这里用到了自动装箱的知识,忘记了的翻到前面看一看啊,c.add(new Object());相当于Object o=new Object(); c.add(o);也就是说Collection只能存储引用类型。之后我们自己给定一个其他类型Customer,并且重写Object中的toString()方法,然后在main()方法中添加元素c.add(cus); 

3.获取元素的个数,使用c.size();

4. 将集合转换成Object类型的数组,使用的方法为toArray(); 之后使用for循环进行遍历;输出为

1

100

java.lang.Object@15db9742

0

5.清空集合,使用c.clear(); 然后再次获取元素个数之后会发现System.out.println(c.size());输出为0;

6.中间我们穿插了c.isEmpty(); 即判断集合是否为空;

 

接下来我们看看迭代器iterator()方法。看以下代码:

import java.util.*;
public class CollectionTest02{
 public static void main(String[] args){
   //创建集合对象
   Collection c=new LinkedList();
   //添加元素
   c.add(100);
   c.add(3.14);
   c.add(false);
   //迭代,遍历
   //1.获取迭代器对象
   Iterator it=c.iterator();
   //2.开始调用方法,完成遍历,迭代
   while(it.hasNext()){
     Object element=it.next();
     System.out.println(element);
   }
   /* //或者使用for循环
   for(Iterator it=c.iterator();it.hasNext();){
     Object o=it.next();
     System.out.println(o);
   } */
 }
}

 

在上述代码中,

1.获取迭代器对象,已经创建了集合对象c,进行迭代时直接调用iterator()方法,也就是说,迭代器=c.iterator(); 这里c可能为ArrayList,HashSet,LinkedList各种集合对象,这样调用iterator()就实现了不同的迭代器,但是所有的迭代器都实现了Iterator接口,所以可以直接Iterator it=c.iterator();也就是说迭代器是直接面向接口编程,看不出具体的实现类,it是引用,保存了内存地址,指向堆中的迭代器对象。

2.开始调用方法,完成遍历,迭代

迭代器Iterator里面有三个方法,hasNext()判断迭代器里面是否有更多的元素,如果有,返回true,否则返回false; next()方法将迭代器向下移动一位,并且取出指向的元素,但要注意,调用next()方法之前,为了防止出现问题,必须先调用hasNext()方法判断是否还有元素。这里介绍了while和for循环两种遍历方式。

posted @ 2018-08-26 13:58  考拉熊_12  阅读(120)  评论(0编辑  收藏  举报