在集合中,实现过iterable接口的集合类都可以调用iterator对象进行对集合的遍历;
集合分为collection和map在collection下又分为list和set
List集合是有序集合可以通过索引查找元素位置i
list集合的遍历方式总共有三种
第一种是for循环
for(int i=0;i<lise.size();i++){
System.out.println(list.get(i));
}
第二种是foreach循环(这种循环相当于使用iterator遍历)
for(String s:list){
System.out.println(s);
}
第三种是调用iterator对象遍历
Iterator it = lists.iterator();
while(it.hasNext()){
System.out.println(it.next);
}
set集合是一个不包含重复元素,无序的集合。Set集合底层是通过map进行存储,并且set集合没有索引下标,不存在get()方法
所以set集合的遍历方式有两种
第一种foreach循环(这种循环相当于使用iterator遍历):
for(String s:set){
System.out.println(s);
}
第二种是调用iterator对象遍历:
iterator it = set.iterator(); //获取iterator对象
while(it.hasNext()) { //判断是否存在下一个元素
System.out.println(it.next()); //获取下一个元素
}
Map集合是以键值对的方式存储元素,所有Map集合的Key是无序不可重复的
Map的遍历方式有
第一种map的keySet()方法返回的Set集合
foreach循环遍历
for (String key : map.keySet()) {
Integer value = map.get(key);
System.out.println(key + " == " + value);
}
Iterator遍历
Iterator<Integer> iterator = map.keySet().iterator();
while(iterator.hasNext()) {
Integer key = iterator.next();
System.out.println("key = " + key+ ", value = " + map.get(key));
}
第二种map的entrySet()集合
foreach循环遍历
for (Map.Entry<String, Integer> entry : map.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + " = " + value);
}
Iterator遍历
Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<Integer, String> m = it.next();
System.out.println("key = " + m.getKey() + ", value = " + m.getValue());
}
队列Queue实现了一个先进先出(FIFO:First In First Out)的有序表,它只允许在集合的队首进行删除操作,队尾进行插入操作。并且Queue是一个接口常用实现类是LinkedList
Queue的遍历方式
第一种方式(会导致队列变空)
String item=null;
while((item=que2.poll())!=null) {
System.out.println(item);
}
第二种迭代器遍历
foreach遍历(相当于使用iterator遍历)
for(String item:que2)
{
System.out.println(item);
}
iterator遍历
Iterator<String> it=que2.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
双端队列Deque是两端都允许对元素进行插入与删除操作
Deque的遍历方式
第一种(会导致队列变空)
String item=null;
while((item=que2.pollLast())!=null) {
System.out.println(item);
}
第二种迭代器遍历
foreach遍历(相当于使用iterator遍历)
for(String item:que2)
{
System.out.println(item);
}
iterator遍历
Iterator<String> it=que2.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
要注意的是第一种方法与第二种方法遍历的顺序相反
栈Stack是一种后进先出(LIFO:Last In First Out)的数据结构。它只允许在集合的队尾进行插入与删除操作
栈的遍历方式与队列不同,必须考虑到是否发生栈为空的情况
第一种方法
while(!s.isEmpty()) {
System.out.println(s.pop());
}
第二种方法迭代器遍历
foreach循环遍历(相当于使用iterator遍历)
for(String item:stack) {
System.out.println(item);
}
iterator遍历
Iterator<String> it=stack.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}