一、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. Linux实战教学笔记17:精简shell基础

    第十七节 精简shell基础 标签(空格分隔): Linux实战教学笔记 1,前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, ...

  2. 【openstack N版】——网络服务neutron

    一.openstack网络服务neutron 1.1neutron介绍 neutron是openstack重要组件之一,在以前是时候没有neutron项目,早期的时候是没有neutron,早期所使用的 ...

  3. java springmvc +spring+ mybaits 模块化开发框架 HTML5+css3.0+bootstrap响应式开发界面

    需要源码,请加QQ:858-048-581 系统模块 1.   权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限       角色(基础权限): 分角色组和角色,独立分配菜单权限和增 ...

  4. 规范 : loading display & ui-view loading

    angular 没有compile 完成的接口,最像的接口是$viewContentLoaded(router ui),但是一开始会开始跑,因为有ui-view 暂时解决方法是在body的loadin ...

  5. Laravel Migrate

    artisan命令行创建migrate 格式: php artisan make:migration YourFileName 示例: php artisan make:migration creat ...

  6. 去掉Dedecms幻灯片的标题文字和绿色背景

    在操作dedecms站群中的站,因为看到首页的幻灯片Flash显示标题和文字,显得有点突兀,觉得应该去除dedecms 幻灯片默认的文字标题和背景,这样会感觉舒服些,下面教大家如何在模板当中去除ded ...

  7. SQL Server-聚焦NOLOCK、UPDLOCK、HOLDLOCK、READPAST你弄懂多少?(三十四)

    前言 时间流逝比较快,博主也在快马加鞭学习SQL Server,下班回来再晚也不忘记更新下博客,时间挤挤总会有的,现在的努力求的是未来所谓的安稳,每学一门为的是深度而不是广度,求的是知识自成体系而不是 ...

  8. SQLServer存储过程实现单条件分页

    SQLServer Procedure Pagination_basic: ALTER PROCEDURE [qiancheng].[Pagination_basic] ( ), --name of ...

  9. One Card Poker

    qsc oj 题目 提交 比赛 小组 排名 帮助 Mactavish 题目 我的提交 One Card Poker 发布时间: 2017年2月14日 14:02   最后更新: 2017年2月14日 ...

  10. 浅谈jquery插件开发模式

    首先根据<jQuery高级编程>的描述来看,jQuery插件开发方式主要有三种: 通过$.extend()来扩展jQuery 通过$.fn 向jQuery添加新的方法 通过$.widget ...