Java集合-Collection

Collection接口 (java.util.Collection)java集合根接口中的一个,尽管不直接实例化Collection,但是我们经常用到其子类,而且通常把其子类当做Collection使用,本文我们会讲到。

创建Collection

正如上面所说,我们不直接实例化Collection,而是实例化其子类,下面是创建Collection子类List的代码:

 
Collection collection = new ArrayList();

上面的示例适用于Collection的每个子类型。

Collection子类

Collection的子类接口:

  • List
  • Set
  • SortedSet
  • NavigableSet
  • Queue
  • Deque

Java没有提供Collection接口的可用实现,因此必须使用列出的子类型之一。Collection接口仅仅定义了一组所有子类都共享的方法,你可以忽略它的特定类型,把它当作一个Collection来处理。这是标准的继承,所以没有什么神奇之处,但是它仍然可以是一个很好的特性,下文会讲述这些共同的操作。

下面的代码是使用Collection的一个方法:

public class MyCollectionUtil{

  public static void doSomething(Collection collection) {
    
    Iterator iterator = collection.iterator();
    while(iterator.hasNext()){
      Object object = iterator.next();

      //do something to object here...
    }
  }
}

 

下面是几种不同的Collection子类调用上面的方法:

Set  set  = new HashSet();
List list = new ArrayList();

MyCollectionUtil.doSomething(set);
MyCollectionUtil.doSomething(list);    

 

Collection增加元素

无论使用Collection的哪个子类,都有标准的增加元素的方法,通过Collectionadd()方法增加元素,下面是代码:

String     anElement  = "an element";
Collection collection = new HashSet();

boolean didCollectionChange = collection.add(anElement);

 

add()方法增加指定的元素,如果Collection因调用add()方法而更改,则返回true。如果Set中已经包含了此元素,那么就不再增加,另一方面,如果是List,List中会存在两个同样的元素

Collection移除元素

remove()方法用于移除指定的元素,如果元素在Collection则会返回true,如果不存在则会返回false,下面是代码:

 
boolean wasElementRemoved = collection.remove("an element");

Collection增加另外一个Collection

同样可以用CollectionaddAll()方法增加另外一个Collection,下面是代码:

Set  aSet  = ... // get Set  with elements from somewhere

Collection collection = new HashSet();

collection.addAll(aSet);    //returns boolean too, but ignored here

 

Collection ddAll()方法增加参数Collection中的所有元素,但是增加的不是Collection本身仅仅是其元元素,如果使用Collection作为参数调用add(),则集合对象本身将被添加,而不是其元素。addAll()方法的具体行为取决于Collection子类型。某些Collection子类型允许将同一元素多次添加,而其他子类型则不允许。

Collection移除Collection

Collection的removeAll()移除给定参数Collection中的所有元素,如果参数Collection中的元素在本身Collection中不存在,则仅仅是忽略,下面是代码:

Collection objects = //... get a collection of objects from somewhere.

collection.removeAll(objects);

 

保留给定的Collection中的元素

Collection retainAll()方法刚好和 removeAll()方法相反,不是移除所有给定参数中的Collection元素,而是保留这些元素,移除其他的元素,需要注意的是仅仅保留原Collection中存在的元素。任何在参数中存在而原Collection中不存在的元素,会被忽略,不会被增加,下面代码:

Collection colA = new ArrayList();
Collection colB = new ArrayList();

colA.add("A");
colA.add("B");
colA.add("C");

colB.add("1");
colB.add("2");
colB.add("3");

Collection target = new HashSet();

target.addAll(colA);     //target now contains [A,B,C]
target.addAll(colB);     //target now contains [A,B,C,1,2,3]

target.retainAll(colB);  //target now contains [1,2,3]

 

检查Collection是否包含确定的元素

Collection有两个方法可以检查是否包含某个或者某些确定的元素, contains() containsAll()方法,下面是代码:

Collection collection   = new HashSet();
boolean containsElement = collection.contains("an element");

Collection elements     = new HashSet();
boolean containsAll     = collection.containsAll(elements);

 

如果Collection中包含某个元素contains() 方法会返回true,否则会返回false

如果Collection中包含给定Collection的所有元素,那么containsAll()返回true,否则返回false

Collection大小

可以调用Collectionsize()方法,返回Collection中的元素个数,下面代码:

int numberOfElements = collection.size();    

 

迭代Collection

可以通过Iterator迭代Collection中的所有元素,下面是代码:

Collection collection = new HashSet();
//... add elements to the collection

Iterator iterator = collection.iterator();
while(iterator.hasNext()){
    Object object = iterator.next();
    System.out.println(object);
}

 

同样可以通过for-each循环迭代Collection:

Collection collection = new HashSet();
collection.add("A");
collection.add("B");
collection.add("C");

for(Object object : collection) {
    System.out.println(object);
}

 

参考:https://blog.csdn.net/cgsyck/article/details/108276863

    https://blog.csdn.net/cgsyck/article/details/108292980

   http://tutorials.jenkov.com/java-collections/collection.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值