java基础之集合框架Collection详解
2015-08-21 15:55
477 查看
集合框架之Collection接口中的方法详解:
(一) Collection:是集合的顶层接口,它的子体系有重复的,有唯一的,有有序的,有无序的。
(二)Collection的功能概述:
1:添加功能
boolean add(Object obj):添加一个元素
boolean addAll(Collection c):添加一个集合的元素
2:删除功能
void clear():移除所有元素
boolean remove(Object o):移除一个元素
boolean removeAll(Collection c):移除一个集合的元素(是一个还是所有)
3:判断功能
boolean contains(Object o):判断集合中是否包含指定的元素
boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(是一个还是所有)
boolean isEmpty():判断集合是否为空
4:获取功能
Iterator<E> iterator()
5:长度功能
int size():元素的个数
面试题:数组有没有length()方法呢?字符串有没有length()方法呢?集合有没有length()方法呢?
6:交集功能
boolean retainAll(Collection c):两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢?
7:把集合转换为数组
Object[] toArray()
(三)Collection集合的遍历
(1)集合转化成数组(toArray()方法):
(2)迭代器--集合的专用遍历方式(Iterator接口):
Iterator接口:对 collection 进行迭代的迭代器
该接口中的方法有三个:
boolean hasNext() 如果仍有元素可以迭代,则返回 true。
E next() 返回迭代的下一个元素。
void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
(四)关于迭代器Iterator的源码(多层继承):
(一) Collection:是集合的顶层接口,它的子体系有重复的,有唯一的,有有序的,有无序的。
(二)Collection的功能概述:
1:添加功能
boolean add(Object obj):添加一个元素
boolean addAll(Collection c):添加一个集合的元素
2:删除功能
void clear():移除所有元素
boolean remove(Object o):移除一个元素
boolean removeAll(Collection c):移除一个集合的元素(是一个还是所有)
3:判断功能
boolean contains(Object o):判断集合中是否包含指定的元素
boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(是一个还是所有)
boolean isEmpty():判断集合是否为空
4:获取功能
Iterator<E> iterator()
5:长度功能
int size():元素的个数
面试题:数组有没有length()方法呢?字符串有没有length()方法呢?集合有没有length()方法呢?
6:交集功能
boolean retainAll(Collection c):两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢?
7:把集合转换为数组
Object[] toArray()
import java.util.ArrayList; import java.util.Collection; /* * Collection集合方法测试(1): * */ public class CollectionDemo1 { public static void main(String[] args) { //接口不能实例化,new了一个List接口所实现的ArrayList类 Collection c = new ArrayList(); // boolean add(Object obj):添加一个元素 System.out.println("add:"+c.add("hello")); c.add("hello"); c.add("world"); c.add("java"); // void clear():移除所有元素 c.clear(); // boolean remove(Object o):移除一个元素 System.out.println("remove:" + c.remove("hello")); System.out.println("remove:" + c.remove("javaee")); // boolean contains(Object o):判断集合中是否包含指定的元素 System.out.println("contains:"+c.contains("hello")); System.out.println("contains:"+c.contains("android")); // boolean isEmpty():判断集合是否为空 System.out.println("isEmpty:"+c.isEmpty()); //int size():元素的个数 System.out.println("size:"+c.size()); System.out.println("c:" + c); } }
import java.util.ArrayList; import java.util.Collection; /* * Collection集合方法测试(2): * boolean addAll(Collection c):添加一个集合的元素 * boolean removeAll(Collection c):移除一个集合的元素 * boolean containsAll(Collection c):判断集合中是否包含指定的集合元素 * boolean retainAll(Collection c):A对B做交集,最终的结果保存在A中,B不变。返回值表示的是A是否发生过改变。 */ public class CollectionDemo2 { public static void main(String[] args) { // 创建集合1 Collection c1 = new ArrayList(); c1.add("abc1"); c1.add("abc2"); c1.add("abc3"); c1.add("abc4"); // 创建集合2 Collection c2 = new ArrayList(); // c2.add("abc1"); // c2.add("abc2"); // c2.add("abc3"); // c2.add("abc4"); c2.add("abc5"); c2.add("abc6"); c2.add("abc7"); // boolean addAll(Collection c):添加一个集合的元素 // System.out.println("addAll:" + c1.addAll(c2)); //boolean removeAll(Collection c):移除一个集合的元素 //只要有一个元素被移除了,就返回true。 //System.out.println("removeAll:"+c1.removeAll(c2)); //boolean containsAll(Collection c):判断集合中是否包含指定的集合元素 //只有包含所有的元素,才叫包含 // System.out.println("containsAll:"+c1.containsAll(c2)); //boolean retainAll(Collection c): //假设有两个集合A,B。 //A对B做交集,最终的结果保存在A中,B不变。 //返回值表示的是A是否发生过改变。 System.out.println("retainAll:"+c1.retainAll(c2)); System.out.println("c1:" + c1); System.out.println("c2:" + c2); } }
(三)Collection集合的遍历
(1)集合转化成数组(toArray()方法):
import java.util.ArrayList; import java.util.Collection; /* * 集合的遍历。其实就是依次获取集合中的每一个元素。 * * Object[] toArray():把集合转成数组,可以实现集合的遍历 */ public class CollectionDemo3 { public static void main(String[] args) { // 创建集合对象 Collection c = new ArrayList(); // 添加元素 c.add("hello"); // Object obj = "hello"; 向上转型 c.add("world"); c.add("java"); // 遍历 // Object[] toArray():把集合转成数组,可以实现集合的遍历 Object[] objs = c.toArray(); for (int x = 0; x < objs.length; x++) { // 注意:数组中没有length()方法,只有length属性 // 向下转型 String s = (String) objs[x]; System.out.println(s + "---" + s.length()); } } }
(2)迭代器--集合的专用遍历方式(Iterator接口):
Iterator接口:对 collection 进行迭代的迭代器
该接口中的方法有三个:
boolean hasNext() 如果仍有元素可以迭代,则返回 true。
E next() 返回迭代的下一个元素。
void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /* * Iterator iterator():迭代器,集合的专用遍历方式 * Object next():获取元素,并移动到下一个位置。 * NoSuchElementException:没有这样的元素,因为你已经找到最后了。 * boolean hasNext():如果仍有元素可以迭代,则返回 true。 * * 注意:尽量不要多次使用it.next()方法,因为每次使用都是访问一个对象 */ public class IteratorDemo { public static void main(String[] args) { // 创建集合对象 Collection c = new ArrayList(); // 创建并添加元素 c.add("hello"); c.add("world"); c.add("java"); // Iterator iterator():迭代器,集合的专用遍历方式 Iterator it = c.iterator(); // 实际返回的肯定是子类对象,这里是多态 while (it.hasNext()) { // System.out.println(it.next()); String s = (String) it.next(); System.out.println(s); } //用for循环遍历 // for(Iterator it = c.iterator();it.hasNext();){ // String s = (String) it.next(); // System.out.println(s); // } } }
(四)关于迭代器Iterator的源码(多层继承):
//接口中的方法默认抽象 public abstract //Iterator接口及其中的方法 public interface Interator { boolean hasNext(); Object next(); } //Iterable接口 :超级接口,在接口中定义了一个Interator()方法 返回值类型为Iterator接口 public interface Iterable { Iterator iterator(); } //Collectio接口继承了Iterable接口同样有了iterator()方法 ,未实现 public interface Collection extends Iterable { Iterator iterator(); } //List接口继承了Collectio接口口同样有了iterator()方法,未实现 public interface List extends Collection { Iterator iterator(); } //ArrayList类实现了List接口,重写了iterator方法,返回一个Itr类的对象 //在Itr类中,该类实现了Iterator接口并重写 了hasNext和next方法 public class ArrayList implements List { public Iterator iterator() { return new Itr(); } private class Itr implements Iterator { public boolean hasNext() {} public Object next(){} } } //这里实际new的是Itr()对象 ; Iterator it = c.iterator();
相关文章推荐
- SpringMvc与Struts2的对比啦
- Java中的内部类
- Java动态库调用
- 一:HTML文本编译器 kindeditor-4.1.10 的使用 SpringMVC+jsp的实现
- 大写数字金额
- spring揭秘 读书笔记 二 BeanFactory的对象注册与依赖绑定
- spring揭秘 读书笔记 二 BeanFactory的对象注册与依赖绑定
- Eclipse常用快捷键
- eclipse快捷键大全
- 打包jar文件
- Java中的泛型方法
- 【转】跟着开涛学SpringMVC
- 简述Struts开发流程
- JAVA基础之数组,List,MAP。排序,最值
- servlet面试时遇到问题和Eclipse中servlet显示无法导入javax.servlet包问题的解决方案
- IOS APNS 含java服务器实现
- Java关键字final、static使用总结
- 【我的技术我做主】那些年从事过的.NET,追求的Java
- struts2学习第一篇 环境配置 之 登录页面
- spring quartz cron表达式