Connectin与其子接口List 必须通过 List的子类实现
在传统的集合类库中,例如,C++ 的标准模版库,迭代器是根据数组索引建模的。如果给定这样一个迭代器,就可以查看指定位置上的元素,就像知道数组索引 i 就可以查看数组元素 a[i] 一样。不需要查找元素,就可以将迭代器向前移动一个位置。这与不需要执行查找操作就可以通过 i++ 将数组索引向前移动一样。但是,java 迭代器并不是这样的。查找操作与位置变更是紧密相连的。查找一个元素的唯一方法是调用 next,而在执行查找操作的同时,迭代器的位置随之向前移动。
集合迭代器
创建一个迭代器Iterator ,在调用一次Next()对象后,要想重新访问第一个元素,需重新创建迭代器(即只需迭代一次),还可以创建Iterator的子类对象ListIterator,ListIterator 不仅可以向后迭代,也可以向前迭代。其中Next()对应previous() , hasNext()对应hasPrevious();
s1.add(1,“jgr”); //插入,下标从零开始
.set 替换
迭代器遍历元素与增强for循环变量元素的区别:使用迭代器遍历集合的元素时可以删除集合的元素,而增强for循环变量集合的元素时,不能调用迭代器的remove方法删 除 元素。
普通for循环与增强for循环的区别:普通for循环可以没有遍历的目标,而增强for循环一定要有遍历的目标。
Map<String, String> map = new HashMap<String, String>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
//第一种:普遍使用,二次取值
System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
}
//第二种
System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第三种:推荐,尤其是容量大时</span>
System.out.println("通过Map.entrySet遍历key和value");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第四种
System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
for (String v : map.values()) {
System.out.println("value= " + v);
}