集合(容器)

     JAVA中的集合主要是用来干嘛的呢?在JAVA语言中,为了方便对多个对象的操作,我们就需要一些能够存储这些对象的东西,虽然数组Array可以实现这个功能,但是它是有一定的弊端的。这时候就要用到JAVA集合了,JAVA集合就像一种容器,能够动态的将对象存入容器中。
     先说说数组,虽然数组也可以用来存储对象,但是它是有它的弊端的
          ①数组一旦被创建后,它的长度是不可变得,就像这样  Object[] P = new Object(10) 之后是不能够改变它的长度的
          ②数组中实际的元素个数是不可知的,所以会导致一些空间的浪费。
     为了避免上面的两个问题,我们就需要用到集合来解决了,JAVA的集合分为Collection接口和Map接口两种体系,首先Collection接口中包含两类,一是set,二是list,其中set的特点主要是其中的数据是无序的,不可重复的(有点类似于数学中的集合),list的特点是有序的,并且是可重复的,所以list可以叫做动态数组(平时用的数组是静态的)。而对于Map接口,它其实是一个有着映射关系的集合(就像数学中的函数一样),在它之中的任意一个元素,总能找到一个元素与之对应。
     下面来说说关于集合中的Collection接口,在Collection接口中包含了一些方法,如下:
1:size()  它可以返回集合的元素个数
2:add(Object e)  它可以向集合中添加任意元素
3:addAll(Collection e)  它可以将e集合中的所有元素都添加到当前集合中去
4:clear()  看名字就知道,它可以清空集合
5;isEmpty()  它可以判断一个集合是否为空  其返回值是boolean类型的
上面五个的实现方式如下:
import  java.util.ArrayList;
import  java.util.Collection;
import  java.util.Date;
import  org.junit.Test;
public  class  CollectionTest {
         @Test
         public  void  testCollection1(){
                //1:size():返回集合中的元素个数
               Collection  A  =  new  ArrayList();
              System.  out .println( A  .size());
                //2:add(Object e):向集合中添加一个元素
                A .add(12);
              System.  out .println( A  .size());
                //3:addAll(Collection obj):将集合obj中的所有元素都添加到集合中去
               Collection  obj  =  new  ArrayList();
                obj .add( new  Date());
                obj .add( "AA" );
                A. addAll( obj );
              System.  out .println( A  .size());
              System.  out .println( A  ); //打印集合中的元素
                //4:clear():清空集合中的元素
                A .clear();
              System.  out .println( A  .size());
                //5:isEmpty():判断集合是否为空
              System.  out .println( A  .isEmpty());  
       }
}//输出结果如下
0
1
3
[12, Wed May 17 14:01:38 GMT+08:00 2017, AA]
0
true
6:contains(Object e )  判断当前集合中是否有元素e
7:containsAll(Collection e)  判断当前集合中是否包含了集合e中的所有元素
8:retainAll(Collection e)  求当前集合与e的共有元素  并将其返回给当前集合
9:remove(Object e)  将元素e从当前集合中除去  成功返回true  失败返回false
10:removeAll(Collection e)  将当前集合中与集合e共有的元素删除  成功返回true  失败返回false
上五个的具体实现如下:
         @Test
         public  void  testCollection2(){
                //6:contains(Object e):判断e是否存在于当前集合中
               Collection  A  =  new  ArrayList();
               Collection  C  =  new  ArrayList();
                A .add( "BB"  );
                A .add( "AA"  );
                A .add(123);
                C .addAll( A );
              System.  out .println( A  .contains( "BB" ));  //true
                //7:containsAll(Collection e):判断当前集合是否包含了集合e的所有元素  存在返回true  反之返回false
               Collection  B  =  new  ArrayList();
                B .add( "BB"  );
                B .add( "AA"  );
              System.  out .println( A  .containsAll( B ));  //true
                //8:retainAll(Collection e):求e与当前集合的共有元素并返回给当前集合,成功返回true反之返回false
                A .retainAll( B  );
              System.  out .println( A  ); //[BB,AA]
                //9:remove(Object e):删除当前集合中的元素e,若成功,返回true,反之返回false
              System.  out .println( A  .remove( "BB"  )); //true
                //10:removeAll(Collection e):删除当前集合中与e所共有的元素,成功返回true,反之返回false
                C .removeAll( B  );
              System.  out .println( C  ); //[123]
       }
}
11:equals(Object e)  判断两个集合是否完全相同
12:toArray()  将集合e转换为数组
13:hashcode():生成当前集合的哈希码
14:iterator()  返回一个Iterator(迭代器)类型的对象  从而可以实现当前集合的遍历!同时配合着Iterator中的hasNext()方法与next()方法使用可以做到遍历集合的目的  hasNext() 是一个返回值为boolean类型的方法,它可以用来判断集合从第一个元素开始是否存在下一个元素  而next()是返回集合的下一个元素。
以上四个方法的用法如下:
         @Test
         public  void  testCollection3(){
               Collection  A  =  new  ArrayList();
               Collection  C  =  new  ArrayList();
                A .add( "BB"  );
                A .add( "AA"  );
                A .add(123);
                C .addAll( A );
                //11:equals() 判断两个集合是否完全相同
                     System.  out .println( A  .equals( C  )); //true
                //12:hashCode()
                     System.  out .println( A  .hashCode()); //2124026
                //13:toArray() 将当前集合转换为数组
                       A .toArray();
                //14:iterator() 返回一个Iterator类型的对象,从而可以实现集合的遍历
                       //集合的遍历方法可以配合hasNext()方法与next()方法使用
                      Iterator  Obj  =  C .iterator();
                       while ( Obj  .hasNext())
                     {
                           System.  out .println( Obj  .next()); //BB  AA  123
                     }
              
       }
     在这里重点是iterator()这个方法,它返回了一个Iterator(迭代器)类型的对象,在Iterator类型中有两个方法  分别是hasNext()与next()  那么hasNext()方法相当于一个指针  先判断集合的第一个元素是否存在 ,若存在,则指针指向第一个元素,然后依次进行后面元素的判断,若不存在则返回false。对于next()方法,它和hasNext()的判断方式一样,只不过它是返回存在的那个元素。一般来说,这两个方法是配合一起使用的 ,就像上面例子中的一样,其中的C集合的遍历就是利用了迭代器的遍历方法;其实我们还可以用增强for循环来遍历一个集合,具体的实现方法如下:
                       for (Object  each  : C  )
                     {
                          
                           System.  out .println( each  );
                         }
       对上面这个例子来说" : "后为需要被遍历的集合,而" : "后的变量为一个局部变量,它是用来存从集合C中遍历出的元素的(相当于对数组进行遍历时的S = A[1]),所以这个局部变量的类型一般声明为Object类型;如果在上面的for循环中加入了一条语句如下:          
    
                       for (Object  each  : C  )
                     {
                             each  =  "帅哥" ;
                           System.  out .println( each  );
                     }
    那么上面这个例子的输出就都为"帅哥"了,但是这里一定要注意集合C中所有元素的值还是没有发生改变的,相当于这里你只是改变了each所存的内容。那么增强for循环结束条件就是直到集合中的所有元素都被遍历了一遍。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值