※ Collection接口
· Set和List接口继承了Collection接口
在Collection接口中声明了适用于Set和List的通用方法:
boolean add(Object o) : 向集合中加入一个对象的引用;
void clear() : 删除集合中的所有对象引用,即不再持有这些对象的引用;
boolean contains(Object o) : 判断在集合中是否持有特定对象的引用;
boolean isEmpty() : 判断集合是否为空;
Iterator iterator() : 返回一个Iterator对象,可用它来遍历集合中的元素;
boolean remove(Object o) : 从集合中删除一个对象的引用;
int size() : 返回集合中元素的数目;
Object[] toArray() : 返回一个数组,该数组包含集合中的所有元素;
注:具体查看API:Java.utl.Collection接口
※ Collections类(适配器)
此类完全由在collection上进行操作或返回 collection 的静态方法组成。它包含在 collection 上操作的多态算法,即“包装器”,包装器返回由指定 collection 支持的新 collection,以及少数其他内容。
※ 类中方法:
注:该类中方法不再验证。包含有让集合中元素随机打乱(shuffle(List<> list))等方法。
※ Iterator接口
Iterator接口中的定义的方法可以帮我们去遍历集合中的元素。
Iterator接口隐藏底层集合的数据结构,向客户程序提供了遍历各种类型的集合的统一方法。Iterator接口中声明方法:
hasNext() : 判断集合中的元素是否遍历完毕,如没有,就返回true;
next() : 返回下一个元素;
//remove() : 从集合中删除上一个由next()方法返回的元素;
通过下面程序实践上面的方法:
import java.util.*;
public class Visitor {
public static void print(Collection c) {
Iterator it = c.iterator();
while(it.hasNext()) {
Object element = it.next();
System.out.println(element);
}
}
public static void main(String args[]) {
Set set = new HashSet();
set.add("Tom");
set.add("Mary");
set.add("Jack");
print(set);
List list = new ArrayList();
list.add("Linda");
list.add("Mary");
list.add("Rose");
print(list);
Map map = new HashMap();
map.put("M","男");
map.put("F","女");
print(map.entrySet());
}
}
※ collection接口方法的验证
package com.briup.collection;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.TreeSet;
import java.util.Vector;
/*
*List和Set共有的操作,由Collection接口规范的
*/
public class CollectionTest {
public static void main(String[] args) {
//规定集合中存储某一类数据时,集合<类型>
//不表名类型的情况下,可以放任意类型
Collection<String> coll=null;
//coll=new Vector<>();
coll=new LinkedList<>();
//向集合中添加元素
//coll.add(1);
coll.add("test");
coll.add("test1");
coll.add("test2");
coll.add("test3");
//调用addAll合并集合的时候要考虑类型是否一致
// Collection<String> coll2=new Vector<>();
// coll2.add("briup");
// coll2.add("briup1");
//coll.addAll(coll);
//时间是java.util.Date,获取的是系统时间
//coll.add(new Date());
//int [] n={1,2,3};
//coll.add(n);
//获取集合中的长度
//System.out.println(coll.size());
//移除集合中的所有元素
//coll.clear();
//System.out.println(coll.size());
//判断集合中是否存在某个元素
//System.out.println(coll.contains("test5"));
// Collection<String> co=new Vector<>();
// co.add("test5");
// co.add("test1");
//移除两个集合相同的元素
//coll.removeAll(co);
//只保留两个集合中相同的元素
//coll.retainAll(co);
//查看co集合中所有的元素在单前集合coll中都能找到
//true,否则false
//System.out.println(coll.containsAll(co));
//System.out.println(coll.isEmpty());
//移除某个元素
//coll.remove("test2");
//将集合转化为数组
// Object [] str=coll.toArray();
// System.out.println(Arrays.toString(str));
// String [] str=new String[coll.size()];
// str=coll.toArray(str);
// System.out.println(Arrays.toString(str));
//获取迭代器,遍历集合的方法(固定写法)
//将数组转化为集合
String[] str={"jake","java","mysql"};
List<String> list=Arrays.asList(str);
Iterator<String> iter=list.iterator();
while(iter.hasNext()){
//iter.next每调用一次就向下取一个值
//System.out.println(iter.next());
System.out.println("*****");
}
// Iterator iter=coll.iterator();
// //iter.hasNext()判断下一个值是否有值,有true没有false
// while(iter.hasNext()){
// Object obj=iter.next();
// System.out.println(obj);
// }
}
}
※ 增强FOR循环遍历数组
增强的for循环(数组和集合)jdk1.5版本开始实行
语法:for(集合中的对象类型 每次循环返回的值:集合){}
注:每次循环返回的值,用变量表示,名字随便起
for(数组中的数据类型 每次循环返回的值:数组){}
在集合中和集合迭代器作用相同
用法(与Iterator相比):
1.Itreator:
Iterator<Object> it = c.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
2.增强for循环:
for(Object it:c){
System.out.println(it);
}