一、Collection概述

1.数组和集合的区别

(1)长度区别

     数组长度是固定的,集合长度是可变的。

(2)存储内容区别

     数组只能存放同一种类型的元素(基本类型/引用类型)。

     集合可以存储不同类型的对象。

 

二、集合的体系

Collection

Collection是集合体系的根接口,它包含了集合的基本操作和属性。

Collection包含了List和Set两大分支。

(1)List是一个有序的队列,每一个元素都有它的索引,第一个元素的索引值是0。

    List的实现类有:ArrayList、LinkedList、Vector、Stack。

(2)Set是一个不允许有重复元素的集合。

    Set的实现类有HashSet、TreeSet。HashSet底层通过HashMap实现,TreeSet底层通过TreeMap实现。

(3)Map是一个映射接口,即key-value键值对。

    AbstractMap是个抽象类,它实现了Map接口中大部分的API,HashMap、TreeMap都是基础与AbstractMap。

    HashTable虽然继承于Dictionary,但它实现了Map接口。

 

三、相关方法

		/*
* 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():元素的个数
* 6:交集功能
* boolean retainAll(Collection c):两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢?
* 7:把集合转换为数组
* Object[] toArray()
*/

 

1.基础测试

	@Test
public void testCollection(){ //创建集合对象
Collection c = new ArrayList(); //1.add():添加一个元素
c.add("AAA");
c.add("BBB");
c.add("CCC");
System.out.println(c); //2.remove():移除一个元素
c.remove("BBB");
System.out.println(c); //3.contains():判断集合中是否包含指定的元素
System.out.println("contains AAA : " + c.contains("AAA")); //4.isEmpty():判断集合是否为空
System.out.println("isEmpty: " + c.isEmpty()); //5.size():元素的个数
System.out.println("size: " + c.size()); //6.clear()
c.clear();
System.out.println(c);
System.out.println("isEmpty: " + c.isEmpty()); }

结果:

      [AAA, BBB, CCC]

      [AAA, CCC]

      contains AAA : true

      isEmpty: false

      size: 2

      []

      isEmpty: true

 

2.带All的测试

     先初始化两个集合对象,然后进行测试。

		//初始化集合对象
Collection c1 = new ArrayList();
c1.add("abc1");
c1.add("abc2");
c1.add("abc3"); Collection c2 = new ArrayList();
c2.add("abc3");
c2.add("abc4");
c2.add("abc5");

 

addAll(Collection c): 添加一个集合的元素。

		c1.addAll(c2);
System.out.println("c1: " + c1);

结果:

      c1: [abc1, abc2, abc3]

      c2: [abc3, abc4, abc5]

      c1: [abc1, abc2, abc3, abc3, abc4, abc5]

 

removeAll(Collection c): 移除一个集合的元素。

		c1.removeAll(c2);
System.out.println("c1: " + c1);

结果:

      c1: [abc1, abc2, abc3]

      c2: [abc3, abc4, abc5]

      c1: [abc1, abc2]

 

containsAll(Collection c): 判断集合中是否包含指定的集合元素。

System.out.println("c1.containsAll(c2): " + c1.containsAll(c2));

结果:

      c1: [abc1, abc2, abc3]

      c2: [abc3, abc4, abc5]

      c1.containsAll(c2): false

 

retainAll(Collection c): 两个集合的交集。

		c1.retainAll(c2);
System.out.println("c1 : " + c1);

结果:

      c1: [abc1, abc2, abc3]

      c2: [abc3, abc4, abc5]

      c1: [abc3]

 

3.其他测试

Object[] toArray(): 把集合转成数组,可以实现集合的遍历。

		//初始化集合对象
Collection c = new ArrayList();
c.add(new Person("AAA",20));
c.add(new Person("BBB",21));
c.add(new Person("CCC",22)); //把集合转换为数组
Object[] arr = c.toArray(); for(int i = 0;i < arr.length;i++){
System.out.println(arr[i]);
}

 

Iterator iterator(): 迭代器,集合的专用遍历方式。

		//初始化集合对象
Collection c = new ArrayList();
c.add(new Person("AAA",20));
c.add(new Person("BBB",21));
c.add(new Person("CCC",22)); //iterator():迭代器,集合专用的遍历方式
Iterator it = c.iterator();//实际返回的是子类对象
while(it.hasNext()){
Person p = (Person)it.next();
System.out.println(p);
}

Java基础学习(五)—Collection的更多相关文章

  1. java基础学习笔记五(抽象类)

    java基础学习总结——抽象类 抽象类介绍

  2. JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

    森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...

  3. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  4. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  5. java基础学习总结——java环境变量配置(转)

    只为成功找方法,不为失败找借口! 永不放弃,一切皆有可能!!! java基础学习总结——java环境变量配置 前言 学习java的第一步就要搭建java的学习环境,首先是要安装 JDK,JDK安装好之 ...

  6. Java实习生常规技术面试题每日十题Java基础(五)

    目录 1.启动一个线程是用run()还是start()? . 2.线程的基本状态以及状态之间的关系. 3.Set和List的区别,List和Map的区别? 4.同步方法.同步代码块区别? 5.描述Ja ...

  7. Java基础学习-- 继承 的简单总结

    代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...

  8. Java基础学习中一些词语和语句的使用

    在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...

  9. 转载-java基础学习汇总

    共2页: 1 2 下一页  Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3     Java基础学习总结——Java对象的序列化和 ...

随机推荐

  1. fetch使用的常见问题及解决办法

    首先声明一下,本文不是要讲解fetch的具体用法,不清楚的可以参考MDN fetch教程. 引言 说道fetch就不得不提XMLHttpRequest了,XHR在发送web请求时需要开发者配置相关请求 ...

  2. 我个人的Java学习经验(一家之言)

    声明:本文只是我的个人经验之谈,或者连经验之谈都算不上,因为我觉得自己还是个新手,没有什么经验可谈,就算是我分享一下自己从开始学习Java到现在的一些心路历程吧,各位看官暂且看吧,欢迎交流.第一部分算 ...

  3. XML入门知识

    什么是XML? 答:指可扩展标记语言(eXtensible Markup Language),被设计用来传输和存储数据:标签没有被预定义.您需要自行定义标签:被设计为具有自我描述性. XML和HTML ...

  4. Angular.js之内置过滤器学习笔记

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. 用phpcms如何将静态页面制作成企业网站(下)

    上篇讲到了子页部分 这样的 有分页选择 列表项的代码部分 最后输出变量pages就可以了 看一下运行的效果 点击下一页 再来改一下子页显示的样式 点击人才将会出来的一个子页面 路径要统一 再来更改后台 ...

  6. 徒手用Java来写个Web服务器和框架吧<第一章:NIO篇>

    因为有个不会存在大量连接的小的Web服务器需求,不至于用上重量级服务器,于是自己动手写一个服务器. 同时也提供了一个简单的Web框架.能够简单的使用了. 大体的需求包括 能够处理HTTP协议. 能够提 ...

  7. NDK 开发(Android.mk配置)

         在我写这篇文章的时候,Android Studio已经是2.3版本了,已经集成CMake 编译工具, 用户只需在 新建项目的时候,添加选项(Include C++ support),Andr ...

  8. (九)javaScript的基本使用

    <script type="text/javascript"> var userName; var userAge; function interInfo(){ use ...

  9. Java Web(十四) 编写MyBookStore项目的总结

    这几天一直没有发博文,原因是在写一个书城的小项目,作为web学习的最后沉淀,接下来就要到框架的学习了. --WH 一.项目介绍 从网上找的一个培训机构的小项目,名称叫做 书城购物网站 吧,其中就是分前 ...

  10. mac air 上的Linux命令训练(1)

    1.cat命令 作用: 读取一个文件的全部内容,并将它输出,如果将它输出到一个目标文件,目标文件将会被替换掉. 参数: -n : 加上行号输出 -b:加上行号,但是不加空白行,输出 -s:当遇到多行空 ...