zoukankan      html  css  js  c++  java
  • 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循环两种遍历方式。

  • 相关阅读:
    spring总结
    mybatis总结
    HttpClient,okhttp,Jodd-http 使用上的差异
    RPC序列化
    RPC是什么? (学习笔记)
    MySQL普通索引与唯一索引
    MySQL 存储引擎
    TCP的流量控制和拥塞控制
    【转载】Windows自带.NET Framework版本大全
    [知识点] 总目录
  • 原文地址:https://www.cnblogs.com/naihuangbao/p/9444516.html
Copyright © 2011-2022 走看看