集合
来源:互联网 发布:建筑渲染软件 编辑:程序博客网 时间:2024/05/17 22:48
- 集合的由来:
我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储。而要想存储多个对象,就不能是一个基本的变量,而应该是一个容器类型的变量,在我们目前所学过的知识里面,有哪些是容器类型的呢?数组和StringBuffer。但是呢?StringBuffer的结果是一个字符串,不一定满足我们的要求,所以我们只能选择数组,这就是对象数组。而对象数组又不能适应变化的需求,因为数组的长度是固定的,这个时候,为了适应变化的需求,Java就提供了集合类供我们使用。 数组和集合的区别?
A:长度区别
- 数组的长度固定
- 集合长度可变
B:内容不同
- 数组存储的是同一种类型的元素
- 而集合可以存储不同类型的元素
C:元素的数据类型问题
- 数组可以存储基本数据类型,也可以存储引用数据类型
- 集合只能存储引用类型
Collection的功能概述:
A. 添加功能
- boolean add(Object obj):添加一个元素
- boolean addAll(Collection c):添加一个集合的元素
B. 删除功能
- void clear():移除所有元素
- boolean remove(Object o):移除一个元素
- boolean removeAll(Collection c):移除一个集合的元素(是一个还是所有)
C.判断功能
- boolean contains(Object o):判断集合中是否包含指定的元素
- boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(是一个还是所有)
- boolean isEmpty():判断集合是否为空
D. 获取功能
Iterator<E> iterator()(重点)
E.长度功能
- int size():元素的个数
- 面试题:数组有没有length()方法呢?字符串有没有length()方法呢?集合有没有length()方法呢?
F. 交集功能
- boolean retainAll(Collection c):两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢?
G.把集合转换为数组
- Object[] toArray()
几个实例:
public class CollectionDemo { public static void main(String[] args) { // 测试不带All的方法 // 创建集合对象 // Collection c = new Collection(); //错误,因为接口不能实例化 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;/* * boolean addAll(Collection c):添加一个集合的元素 * boolean removeAll(Collection c):移除一个集合的元素(是一个还是所有) * boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(是一个还是所有) * boolean retainAll(Collection c):两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢? */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):两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢? //假设有两个集合A,B。 //A对B做交集,最终的结果保存在A中,B不变。 //返回值表示的是A是否发生过改变。 System.out.println("retainAll:"+c1.retainAll(c2)); System.out.println("c1:" + c1); System.out.println("c2:" + c2); }}
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++) { // System.out.println(objs[x]); // 我知道元素是字符串,我在获取到元素的的同时,还想知道元素的长度。 // System.out.println(objs[x] + "---" + objs[x].length()); // 上面的实现不了,原因是Object中没有length()方法 // 我们要想使用字符串的方法,就必须把元素还原成字符串 // 向下转型 String s = (String) objs[x]; System.out.println(s + "---" + s.length()); } }}
0 0
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- myeclipse Unsupported major.minor version 51.0解决办法
- GO类型嵌套
- eclipse show in windows explorer 在电脑 文件夹浏览此文件
- PHP网站开发实例教程之知识点归纳2(操作数据库)
- 一张图了解TCP/IP五层网络模型
- 集合
- 在 Windows 平台搭建 PHP 集成开发环境
- hightcharts项目中常见的问题总结
- PCIe Expansion EB3600 5槽及10槽扩展坞
- Linux基础备忘_01:audit2allow的错误信息输出问题
- 离线情况下安装numpy、pandas和matplotlib
- MapReduce实例(一)
- 【框架学习】spring简介
- 【Unity3d】介绍两个实用的UI按钮小工具