13.6集合的输出
13.6.1 迭代输出 Iterator
1.Iterator 接口简介
2.Iterator接口的相关操作
(1)实例操作1——输出Collection中的全部内容
【例13.19】进行输出
Iterator<String> iter = allCollection.iterator();
iter.next()
iter.hasnext()
package jiaqi;
import java.util.*;
public class temp {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Collection<String> allCollection = new ArrayList<String>();
allCollection.add("s1");
allCollection.add("s2");
allCollection.add("s3");
allCollection.add("s4");
Iterator<String> iter = allCollection.iterator();
while (iter.hasNext())
{
String str = iter.next();
System.out.println(str);
}
}
}
(2)操作2----------- 使用Iterator删除指定内容
【例13.20】删除元素
iter.remove()
package jiaqi;
import java.util.*;
public class temp {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Collection<String> allCollection = new ArrayList<String>();
allCollection.add("s1");
allCollection.add("s2");
allCollection.add("s3");
allCollection.add("s4");
Iterator<String> iter = allCollection.iterator();
while (iter.hasNext())
{
String str = iter.next();
if("s2".equals(str))
{
iter.remove();
}
else
{
System.out.println(str);
}
}
}
}
(3)迭代输出时删除元素的注意点
【例13.2】不正确的删除方法
遍历时,集合allXXX不要remove(XXX),会破结构
package jiaqi;
import java.util.*;
public class temp {
public static void main(String[] args) {
// TODO 自动生成的方法存根
List<String> allList = new ArrayList<String>();
allList.add("s1");
allList.add("s2");
allList.add("s3");
allList.add("s4");
Iterator<String> iter = allList.iterator();
while (iter.hasNext())
{
String str = iter.next();
if("s2".equals(str))
{
allList.remove(str);
}
else
{
System.out.print(str+"\t");
}
}
System.out.println();
System.out.println(allList);
}
}
13.6.2双向迭代输出Listiterator
1. Listiterator 接口简介
2. Listiterator接口的相关操作
(1)实例操作1——进行双向迭代
【例13.22】进行双向迭代
iter.hasNext()
iter.next()
iter.hasPrevious()
iter.previous()
package jiaqi;
import java.util.*;
public class temp {
public static void main(String[] args) {
List<String> allList = new ArrayList<String>();
allList.add("s1");
allList.add("s2");
allList.add("s3");
allList.add("s4");
ListIterator<String> iter = allList.listIterator();
while(iter.hasNext())
{
String str = iter.next();
System.out.print(str+"\t");
}
System.out.println();
while(iter.hasPrevious())
{
String s = iter.previous();
System.out.print(s + "\t");
}
}
}
(2)实例操作2——增加及替换元素
【例13.23】增加及替换集合中的元素
iter.add(“Add”) , iter.set()
package jiaqi;
import java.util.*;
public class temp {
public static void main(String[] args) {
List<String> allList = new ArrayList<String>();
allList.add("s1");
allList.add("s2");
allList.add("s3");
allList.add("s4");
ListIterator<String> iter = allList.listIterator();
while(iter.hasNext())
{
String str = iter.next();
System.out.print(str+"\t");
iter.set("L-"+str);
}
System.out.println();
iter.add("Add");
while(iter.hasPrevious())
{
String s = iter.previous();
System.out.print(s + "\t");
}
}
}
13.6.3 Java 新支持 foreach
【例13.24】使用foreach输出
package jiaqi;
import java.util.*;
public class temp {
public static void main(String[] args) {
List<String> allList = new ArrayList<String>();
allList.add("s1");
allList.add("s2");
allList.add("s3");
allList.add("s4");
for (String str : allList)
{
System.out.print(str+"\t");
}
}
}
13.6.4 废弃的接口 Enumeration
【例13.25】使用Enumeration输出
package jiaqi;
import java.util.*;
public class temp {
public static void main(String[] args) {
Vector<String> vc = new Vector<String>();
vc.add("s1");
vc.add("s2");
vc.add("s3");
System.out.println(vc);
Enumeration<String> iter = vc.elements();
while(iter.hasMoreElements())
{
String str = iter.nextElement();
System.out.print(str+"\t");
}
}
}