//这里我们使用 Collection接口-->List接口 的实现类 ArrayList 来实验。
Collection coll = new ArrayList();
coll.add(new String("aa"));
coll.add(520);
coll.add(new Date());
//上面的代码创建了一个集合coll,并添加了三个元素,分别是字符串"aa"、Integer包装类520、和一个系统当前的Date对象。
//遍历集合的前提 a:需要coll集合调用iterator();
b:需要 Iterator 接口 的实现类接收 并 使用 next() 和 hasNext() 相结合。
Iterator iterator = coll.iterator();
//遍历集合 方法一:iterator.next();
System.out.println(iterator.next());
System.out.println(iterator.next());
System.out.println(iterator.next());
//这里我们已知coll集合的长度为3,所以重复调用3次 iterator.next();方法。
//弊端:代码冗长,在不能够确定集合的长度的情况下,无法准确的调用。
//遍历集合 方法二:for循环
//观察方法一 我们可以得出,iterator.next();方法的调用重复了三次,运行重复的动作当然会第一时间想到循环。
for(int i = 0; i < coll.size(); i++){
System.out.println(iterator.next());
}
//同样不建议使用,对于集合的遍历,Iterator是给出直接可以调用的方法的。
//遍历集合 方法三 : hasNext();
while(iterator.hasNext()){
System.out.println(interator.next());
}
//错误的写法
while((iterator.next()) != null){
System.out.println(iterator.next());
}
//原理图:
//更好的办法(增强for循环)
for(Object obj : coll){
//格式 :for( 接收类型 成员变量名(相应类型): 想要遍历的集合 ){}
//这里冒号指的就是将集合 coll 中的每一个元素赋值给Object类型的成员变量 obj。
System.out.println(obj); //输出obj即可
}
//秘籍:增强for循环 不仅可以遍历集合 还可以遍历数组。
package test.thread;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class map {
public static void main(String[] args) {
// 遍历Map集合的几种方法
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("xiaoming", 20);
map.put("zhangsan", 21);
map.put("dean", 22);
map.put("sam", 18);
// 1,遍历Map集合的key值:
Set<String> s = map.keySet();
Iterator iterator = s.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
// 2,遍历Map集合的value值:
Collection<Integer> value = map.values();
for (Integer v : value) {
System.out.println(v);
}
// 3,遍历Map集合的key - value对:
// 第一种办法:
Set s1 = map.entrySet();
for (Object obj : s1) {
Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>) obj;
System.out.println(entry.getKey() + "===>" + entry.getValue());
}
// 第一种办法:
Set<String> s2 = map.keySet();
for (String str : s2) {
System.out.println(str + "===>"+ map.get(str));
}
}
}