【Java基础15_1】Collection类及其基本用法
2017-10-20 21:44
609 查看
Collection类->目录
【回顾】集合与数组的区别1. 集合体系图
2. 常见API
2.1 添加功能
2.2 删除功能
2.3 判断功能
2.4 获取功能
2.5 长度功能
2.6 交集功能
2.7 把集合转换为数组
3. 面试题
4. 获取交集的注意事项
5. 集合的遍历
5.1 利用数组遍历
5.2 用迭代器遍历
集合和数组区别
长度区别:
数组的长度是固定的而集合的长度是==可变==的
存储数据类型的区别:
数组可以存储基本数据类型 , 也可以存储引用数据类型;
而集合只能存储引用数据类型
内容区别:
数组只能存储同种数据类型的元素 ,集合可以存储==不同类型==的元素
1.体系结构图
Collection常见API
添加功能
方法声明 | 作用 |
---|---|
boolean add ( Object obj ) | 添加一个元素 |
boolean addAll ( Collection c ) | 添加一个集合的元素 |
方法声明 | 作用 |
---|---|
void clear() | 移除所有元素 |
boolean remove(Object o) | 移除一个元素 |
boolean removeAll(Collection c) | 移除一个集合的元素(一个) |
方法声明 | 作用 |
---|---|
boolean contains(Object o) | 判断集合中是否包含指定的元素 |
boolean containsAll(Collection c) | 判断集合中是否包含指定的集合元素(所有) |
boolean isEmpty( ) | 判断集合是否为空 |
获取当前集合的迭代器
方法声明 | 作用 |
---|---|
Iterator < E > iterator( ) | 迭代器遍历(重点) |
方法声明 | 作用 |
---|---|
int size() | 元素的个数 |
boolean retainAll ( Collection );
把集合转换为数组
Objec [ ] toArray()
面试题
数组有没有 length() 方法呢?字符串有没有length()方法呢 ? 集合有没有 length( ) 方法呢?
答:数组有 length 属性;字符串有length()方法;集合没有 length( ),但是有size( )方法
获取交集的注意事项
boolean retainAll ( Collection c )
获取交集。获取到的元素去c中,布尔类型的值表示集合是否==发生改变==
如果c.retainAll(c1), 获取到的交集元素去了c中,布尔类型的值表示c这个集合是否发生改变。如果改变了就返回true.
public class CollectionDemo1 { public static void main(String[] args) { //创建一个集合 Collection<String> c1 = new ArrayList<>(); Collection<String> c2 = new ArrayList<>(); //添加元素 c1.add("田馥甄"); c1.add("银临"); c1.add("谢春花"); c2.add("谢春花"); System.out.println("c1获取交集前:"+c1); System.out.println("c2获取交集前:"+c2); //获取交集 System.out.println("获取交集后的集合是否发生改变: "+c1.retainAll(c2)); System.out.println("C1获取交集后: "+c1); System.out.println("C2: "+c2); } }
程序运行结果:
c1获取交集前:[田馥甄, 银临, 谢春花]
c2获取交集前:[谢春花]
获取交集后的集合是否发生改变: true
C1获取交集后: [谢春花]
C2: [谢春花]
集合的遍历
其实就是依次获取集合中的每一个元素。有以下两种方法:
1. 用数组遍历
把集合转成数组;
通过遍历数组实现遍历集合
集合转为数组方法:
Object[] toArray():
import java.util.ArrayList; import java.util.Collection; /* * 用数组遍历集合 */ public class CollectionTraversalArray { public static void main(String[] args) { //创建集合 Collection<String> c = new ArrayList<String>(); //添加元素 c.add("周杰伦"); c.add("朴树"); c.add("毛不易"); //转为数组 Object[] obj = c.toArray(); //遍历数组 for(Object ob:obj) { //向下转型 String str = (String)ob; System.out.print(str+" "); } } }
package com.itbull; import java.util.ArrayList; import java.util.Collection; /* * 数组遍历法 * Collection遍历自定义类型Singer */ public class CollectionTraversalSinger { public static void main(String[] args) { //创建Singer Singer s1 = new Singer("周杰伦","晴天"); Singer s2 = new Singer("朴 树","白桦林"); Singer s3 = new Singer("谭维维","如果有来生"); // 创建集合 Collection<Singer> c = new ArrayList<Singer>(); c.add(s1); c.add(s2); c.add(s3); //转为数组 Object[] arr = c.toArray(); //遍历数组 for(Object obj:arr) { Singer ob = (Singer) obj; System.out.println(ob.getName()+"-----"+ob.getSongName()); } } }
//自定义Singer类 public class Singer { private String name; private String songName; public Singer() { super(); // TODO Auto-generated constructor stub } public Singer(String name, String songName) { super(); this.name = name; this.songName = songName; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSongName() { return songName; } public void setSongName(String songName) { this.songName = songName; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((songName == null) ? 0 : songName.hashCode()); return result; } @Override public String toString() { return "Singer [name=" + name + ", songName=" + songName + "]"; } }
2. 用迭代器遍历(重点)
Iterator 中有如下几个方法可以用来获取集合中的元素:
方法名 | 作用 |
---|---|
boolean hasNext ( ) | 判断是否有下一个元素 |
Object next ( ) | 获取下一个元素 |
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /* * 迭代器Iterator遍历String */ public class CollectionTraversalIterator { public static void main(String[] args) { //创建集合 Collection<String> c = new ArrayList<String>(); //添加元素 c.add("孙燕姿"); c.add("金玟岐"); c.add("范玮琪"); //获取当前集合的迭代器对象 Iterator<String> it = c.iterator(); //如果有下一个,就获取 while(it.hasNext()) { System.out.println(it.next()); } } }
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /* * 用Iterator遍历自定义对象Singer */ public class CollectionIteratorSinger { public static void main(String[] args) { //创建Singer对象 Singer s1 = new Singer("回音哥","海绵宝宝"); Singer s2 = new Singer("双 笙","葬花吟"); Singer s3 = new Singer("玄 觞","不朽之罪"); //创建集合对象 Collection<Singer> c = new ArrayList<Singer>(); //将自定义对象添加到集合中 c.add(s1); c.add(s2); c.add(s3); //获取集合的迭代器对象 Iterator<Singer> it = c.iterator(); System.out.println("\t\t歌手名字\t\t歌曲"); //如果有下一个就获取 while (it.hasNext()) { Singer singer = it.next(); System.out.println("\t\t"+singer.getName()+"\t\t"+singer.getSongName()); } } }
相关文章推荐
- JAVA Script 之Jquery初步学习,入门学习,jquery基础,浅谈其基本用法。
- Java语言基础逻辑运算符的基本用法
- Java基本功练习十七GUI(图形用户界面基础【基本概念及其使用、三种布局管理器实现同样的框架练习】)
- 深入Java基础(一)——基本数据类型及其包装类
- Java语言基础三元运算符的基本用法
- Java集合基础篇(3)-HashSet基本用法
- JAVA基础 day21 字节流的输入和输出 字节流的缓冲区 (自己实现BufferedInputStream) 键盘输入 转换流的用法 改变标准输入输出设备 IO流操作的基本规律
- Java基础知识强化之集合框架笔记04:Collection集合的基本功能测试
- 【深入Java基础】java八种基本数据类型及其包装类
- java基础之面向对象及其基本特征
- Java基础之011-Java基本数据类型及其包装类
- 【深入Java基础】HashMap的基本用法
- Java_基础—Collection集合的基本功能测试
- java基础27 单例集合Collection及其常用方法
- java语言基础(13)——运算符基本用法(算数、赋值、比较、逻辑、位运算符)
- Java继承的基本概念及其限制(基础语法二)
- 【Java基础03】数组及其遍历、最值、反转、查表和基本查找
- Java基础 - 1.1-Java 语言特性及其基本语法
- Java基础-15总结对象数组,集合Collection,集合List
- Java基础学习总结(122)——Java八种基本数据类型的包装类及其装箱拆箱详解