Java之Collection接口详解

1. Collection接口的介绍以及接口所定义方法的详解

1.1 Collection接口定义

Collection接口是java集合框架最顶层接口。它提供了大量通用的集合操纵方法,Collection接口是Sort接口和List接口的父接口。

1.2 转换构造方法

Collection接口的实现都有一个带有集合参数的构造方法。这个构造方法称为“转换构造方法”,将新的集合初始化为包含集合参数的所有元素,不论是给定接口的子接口或其实现类型。换句话就是允许改变集合的类型。例如:

Collection<String>a;

a可以是List,Set或另外一种Collection。通常,习惯性创建一个新的ArrayList(List接口的一个实现),初始化为包含a中的所有元素例如:

List<String>list=new ArrayList<String>(a);

这里的ArrayList是List接口的一个实现类,在创建其实例对象时,将一个集合a作为参数传递给其构造方法,由a集合中的所有元素去初始化list。通过转化构造方法将a中的所有元素赋值给了list。

1.3Collection接口中所定义的方法

掌握Collection接口中定义的常用方法,这些常用方法同样会被Collection接口的子接口所继承

public interface Collection<E> extends Iterable<E>{

//基本操作
int size();
boolean isEmpty();
boolean contains(Object element);
boolean add(E element)
boolean remove(Object element);
Iterator<E>iterator ();
//批量操作
boolean containsAll(Collection<?> c)
boolean removeAll(Collection<?> c);
boolean addAll(Collection<? extends E> c);
void clear();
//数组操作
Object[]toArray();
<T> T[] toArray(T[] a);
}

1.4Collection接口的基本操作

从上面接口定义中可以看出来基本操作由6个使用这些方法可以判断集合大小(size()和isEmpty())可以检查集合是否包含某个元素(contains()方法),可以向集合中添加或者删除元素(add(),remove()),以及获取一个访问元素的迭代方法(iterator()方法)

1.5遍历Collection接口

要遍历集合元素,由两种方法:使用for-each结构和使用Iterator迭代方法。

 

(1)for-each结构

允许使用for循环简洁的遍历一个集合或者数组。下面的代码使用的for-each结构在每一行上输出一个集合的每一个元素

for(Object o : collection){
system.out.println(o);
}

(2)Iteration迭代方法

迭代方法是一个对象,通过它可以遍历一个集合并从集合中选择地移除元素。通过调用集合的Iterator方法获取迭代方法。接口itertor的定义如下:

public interface Iterator<E>{
   boolean hasNext();
   E next();
   void remove();
}

当迭代方法还有更多元素时,hasNext方法返回true,next方法返回迭代方法中的下一个元素。remove方法移除由next方法从Collection中返回的最后一个元素。每次调用next方法以后只能调用remove()方法一次,如果违反此规定就会抛出异常。

需要注意的是,在迭代期间,Iterator.remove是修改集合唯一的安全方法;在迭代期间,任何其他修改集合方法都会造成不确定结果。下面几种情况使用iterator代替for-each结构

(1)移除当前元素。

(2)在多重集合上进行迭代

下面的方法演示怎样使用一个Iterator来过滤一个任意的Collection集合,即遍历集合并移除指定的元素

Static void filter(Collection<?> c){
for(Iterator<?>it =c.iterator();it.hasNext();)
 if(!cond(it.next()))
it.remove();
}

调用集合c的iterator方法,获得一个迭代方法it;通过迭代方法it的hasNext()方法来判断是否还有更多元素。如果有,返回true,循环继续。在循环体内,通过调用it的next方法,来获取迭代方法的下一个元素

1.6 Collection接口的数组操作

toArray()方法主要作为集合和老的期望输入数组的API之间大的桥梁。数组操作允许Collection中的内容被转换到一个数组中去。用这种不带参数的简单方式创建一个新的Object数组。例如,假设c是一个Collection,下面的代码是将c中的内容放入一个新分配的Object数组中,该数组的长度c中元素数量

Object[] a=c.toArray();

有一种更复杂的方式,允许调用者提供一个数组或者选择输出数组运行类型。例如,假如已知c只包含字符串。下面的代码将c中的内容放入一个新分配的String数组中,该数组的长度等于c中元素的数量

String[] a=c.toArray(new String[0])

Collection介绍完了不懂的地方或者由错误的地方欢迎留言交流

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值