JavaSE——集合(一)Collection
作者:互联网
1.集合框架
Java是面向对象的语言,对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,Java中就提供了集合类。
(1)数组的长度是固定的,而集合的长度第可变的
(2)数字既可以存储基本数据类型,也可以存储引用数据类型。而集合只能存储引用数据类型。
(3)数组只能存储同种数据类型的元素,而集合可以存储不同数据类型的元素。
2.集合功能描述
a:添加功能
boolean add(Object obj):添加一个元素
boolean addAll(Collection c):添加一个集合的元素 (给一个集合添加进另一个集合中的所有元素)
b:删除功能
void clear():移除所有元素
boolean remove(Object o):移除一个元素
boolean removeAll(Collection c):移除一个集合的元素(移除一个以上返回的就是true) 删除的元素是两个集合的交集元素
如果没有交集元素 则删除失败 返回false
c:判断功能
boolean contains(Object o):判断集合中是否包含指定的元素
boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(这个集合 包含 另一个集合中所有的元素才算包含 才返回true)
比如:1,2,3 containsAll 12=true 1,2,3 containsAll 2,3,4=false
boolean isEmpty():判断集合是否为空
d:获取功能
Iterator<E> iterator()(重点)
e:长度功能
int size():元素的个数
面试题:数组有没有length()方法呢?字符串有没有length()方法呢?集合有没有length()方法呢?
f:交集功能
//例如:A集合对B集合取交集,获取到的交集元素在A集合中。返回的布尔值表示的是A集合是否发生变化
boolean retainAll(Collection c):获取两个集合的交集元素(交集:两个集合都有的元素)
g:把集合转换为数组
Object[] toArray()
- 案例演示1
package com.westmo.demo8;
import java.util.Collection;
import java.util.ArrayList;
public class MyDemo1 {
public static void main(String[] args) {
Collection collection1 = new ArrayList();
collection1.add(12);//添加元素到集合collection1中
collection1.add("qwe");
System.out.println(collection1);
Collection collection2 = new ArrayList();
collection2.add('1');
collection2.add(1.1);
collection2.addAll(collection1);//将集合collection1中得所有元素添加到集合collection2中
System.out.println(collection2);
collection1.clear();//清除集合中的所有元素
System.out.println(collection1);
collection2.remove(1.1);//清除集合中的指定元素
System.out.println(collection2);
}
}
- 案例演示2
package com.westmo.demo8;
import java.util.ArrayList;
import java.util.Collection;
public class MyDemo2 {
public static void main(String[] args) {
Collection collection1 = new ArrayList();
collection1.add(21);
collection1.add("qw");
collection1.add(2.2);
Collection collection2 = new ArrayList();
collection2.add(21);
collection2.add(2.2);
System.out.println(collection1.retainAll(collection2));//获取两个集合中的交集元素
collection1.removeAll(collection2);//清除集合collection1中与collection2集合中由交集的元素
System.out.println(collection1);
System.out.println(collection2);
System.out.println(collection1.contains("qw"));//判断集合中是否包含指定元素
System.out.println(collection1.containsAll(collection2));//判断一个集合中是否包含另一个集合中所有元素
}
}
- 案例演示(迭代器集合遍历)
package com.westmo.demo8;
import java.util.Collection;
import java.util.ArrayList;
import java.util.Iterator;
public class MyDemo3 {
public static void main(String[] args) {
Collection arrayList = new ArrayList();
arrayList.add(1000);
arrayList.add(2000);
arrayList.add(3000);
System.out.println(arrayList.size());//获取集合中元素的个数
Iterator iterator = arrayList.iterator();//通过迭代器Interator来遍历集合中的元素
//通过Iterator中的两个方法,hashNext()和next()方法。hashNext()负责判断集合中是否还有元素可以迭代,
// next()获取元素,并移动到下一个位置
while (iterator.hasNext()) {
Object next = iterator.next();
System.out.println(next);
}
}
}
- 案例演示(把集合转换为数组)
package com.westmo.demo8;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
public class MyDemo4 {
public static void main(String[] args) {
Collection arrayList = new ArrayList();
arrayList.add(100);
arrayList.add(200);
arrayList.add(150);
arrayList.add(400);
Iterator iterator = arrayList.iterator();
/* Integer[] integers = new Integer[arrayList.size()];
int i=0;
while (iterator.hasNext()) {
Object next = iterator.next();
integers[i]= (Integer) next;
i++;
}
System.out.println(Arrays.toString(integers));*/
Object[] objects = arrayList.toArray();//调用toArray()方法直接进行转换
System.out.println(Arrays.toString(objects));
for (int i = 0; i < objects.length; i++) {
Object object = objects[i];
Integer num= (Integer) object;
System.out.println(num);
}
}
}
3.迭代器原理
- 迭代器是对集合进行遍历,而灭一个集合内部的存储结构都是不同的(例如ArrayList集合是数组,LinkedList集合是链表),所以每个集合的存和取都是不一样的,那么就需要在每个集合类中定义hashNext()和next()方法,这样做的话就会使整个集合体系过于臃肿,迭代器是将这些方法向上抽取出接口,迭代器中只是声明这些方法,每个集合类定义自己的迭代方法,
- 优点
- 规定了整个集合体系的遍历方式都是hashNext()和next()方法
- 代码由底层内部实现
标签:元素,Collection,add,collection2,collection1,集合,JavaSE 来源: https://blog.csdn.net/weixin_44324174/article/details/104044572