Java基础学习(五)—Collection
一、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的更多相关文章
- java基础学习笔记五(抽象类)
java基础学习总结——抽象类 抽象类介绍
- JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API
森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397 文章- 0 评论- 78 JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- java基础学习总结——java环境变量配置(转)
只为成功找方法,不为失败找借口! 永不放弃,一切皆有可能!!! java基础学习总结——java环境变量配置 前言 学习java的第一步就要搭建java的学习环境,首先是要安装 JDK,JDK安装好之 ...
- Java实习生常规技术面试题每日十题Java基础(五)
目录 1.启动一个线程是用run()还是start()? . 2.线程的基本状态以及状态之间的关系. 3.Set和List的区别,List和Map的区别? 4.同步方法.同步代码块区别? 5.描述Ja ...
- Java基础学习-- 继承 的简单总结
代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...
- Java基础学习中一些词语和语句的使用
在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...
- 转载-java基础学习汇总
共2页: 1 2 下一页 Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3 Java基础学习总结——Java对象的序列化和 ...
随机推荐
- URLencode 特殊字符 转义 遇上的坑
在项目中遇到一个问题,在webveiw和原生之间进行传值的时候,出现了一些encode的小问题.看起来很简单的问题,实际上却存在不小的坑. 首先说一下目前项目的结构,在一个activity中,webv ...
- 关于volatile的可见性和禁止指令重排序的疑惑
在学习volatile语义的可见性和禁止指令重排序的相关测试中,发现并不能体现出禁止指令重排序的特性 实验代码如下 package com.aaron.beginner.multithread.vol ...
- 了解 : angular controller link ng-init 顺序
controller 会先跑,接着是view 里的ng-init,最后是link (指令里的). 所有在指令里如果用link去拿$attr,会有拿不到ng-init想setup的值
- Hibernate 迫切连接和普通连接的区别
package com.baidu.test; import java.util.ArrayList;import java.util.LinkedHashSet;import java.util.L ...
- for循环与foreach的区别
for循环与foreach的区别 foreach 依赖 IEnumerable. 第一次 var a in GetList() 时 调用 GetEnumerator 返回第一个对象 并 赋给a, 以后 ...
- Gradle之恋-任务2
由于任务作为Gradle的核心功能模块,多花点精力是值得的,本文继上一篇主要涉及到:任务的执行顺序.为任务添加组和描述.跳过任务.扩展任务属性.定义默认任务. 任务顺序 如果构建(build)不能在清 ...
- 用C#来学习唐诗三百首
Begin 最近把项目做完了,闲来无事,就想做点好玩的事情,刚好前几天下载了[唐诗三百首]和[全唐诗]这两个txt文件,正好用C#来整理一下. [唐诗三百首]文件格式 [全唐诗]文件格式 目标 将每一 ...
- 每天一个Linux命令 3
Linux grep命令详解: grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一 ...
- KoaHub平台基于Node.js开发的Koa的模板系统handlebars插件代码详情
koahub-handlebars koahub-handlebars koahub handlebars templates Installation $ npm install koahub-ha ...
- PowerDesigner建模应用(二)逆向工程,导出PDM文件前过滤元数据(表、视图、存储过程等)
在上一篇文章<PowerDesigner建模应用(一)逆向工程,配置数据源并导出PDM文件>步骤二中导出了目标数据库对应的PDM文件, 该文件中展示出了所有表的信息与关系. 某些业务场景下 ...