A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

java集合类的使用可以说是无处不在,总的我们可以将之分为三大块,分别是从Collection接口延伸出的List、Set和以键值对形式作存储的Map类型集合。
     许多情况需要我们遍历出集合中的元素,并做相应的处理。
     下面对各种类型的集合的遍历做一些总结,关于增强for循环,需要注意的是,使用增强for循环无法访问数组下标值,对于集合的遍历其内部采用的也是Iterator的相关方法。如果只做简单遍历读取,增强for循环确实减轻不少的代码量。
关于List与Set类型集合的遍历:
Java代码  [url=][/url]

  • import java.util.ArrayList;   
  • import java.util.HashSet;   
  • import java.util.Iterator;   
  • import java.util.List;   
  • import java.util.Set;   
  •    
  • public class ListAndSetTest {   
  •    
  •     public static void main(String[] args) {   
  •         // List集合的遍历   
  •         listTest();   
  •         // Set集合的遍历   
  •         setTest();   
  •     }   
  •    
  •     private static void setTest() {   
  •         Set<String> set = new HashSet<String>();   
  •         set.add("JAVA");   
  •         set.add("C");   
  •         set.add("C++");   
  •         // 重复的加不进去。   
  •         set.add("JAVA");   
  •         set.add("JAVASCRIPT");   
  •    
  •         //set集合遍历方法1,使用iterator   
  •         Iterator<String> it = set.iterator();   
  •         while (it.hasNext()) {   
  •             String value = it.next();   
  •             System.out.println(value);   
  •         }   
  •             
  •         //set集合遍历方法2,使用增强for循环。   
  •         for(String s: set){   
  •             System.out.println(s);   
  •         }   
  •     }   
  •    
  •     // 遍历list集合   
  •     private static void listTest() {   
  •         List<String> list = new ArrayList<String>();   
  •         list.add("java111");   
  •         list.add("java222");   
  •         list.add("java333");   
  •         list.add("java444");   
  •         list.add("java555");   
  •    
  •         // 遍历方式1 ,使用iterator   
  •         Iterator<String> it = list.iterator();   
  •         while (it.hasNext()) {   
  •             String value = it.next();   
  •             System.out.println(value);   
  •         }   
  •    
  •         // 遍历方法2 , 使用传统for循环进行遍历。   
  •         for (int i = 0, size = list.size(); i < size; i++) {   
  •             String value = list.get(i);   
  •             System.out.println(value);   
  •         }   
  •    
  •         // 遍历方法3 , 使用增强for循环进行遍历。   
  •         for (String value : list) {   
  •             System.out.println(value);   
  •         }   
  •     }   
  • }   
  •    


关于Map类型集合的遍历,keySet()与entrySet()方法:
Java代码  [url=][/url]

  • //增强For循环   
  • public class MapTest {     
  •     public static void main(String[] args) {   
  •         // 创建一个HashMap对象,并加入了一些键值对。   
  •         Map<String, String> maps = new HashMap<String, String>();   
  •         maps.put("111", "java111");   
  •         maps.put("222", "java222");   
  •         maps.put("333", "java333");   
  •         maps.put("444", "java444");   
  •         maps.put("555", "java555");   
  •             
  •         // 传统的遍历map集合的方法1; keySet()   
  •         //traditionalMethod1(maps);   
  •         // 传统的遍历map集合的方法2; entrySet()   
  •         //traditionalMethod2(maps);   
  •         // 使用增强For循环来遍历map集合方法1; keySet()   
  •         //strongForMethod1(maps);   
  •         // 使用增强For循环来遍历map集合方法2; entrySet()   
  •         strongForMethod2(maps);   
  •     }   
  •    
  •     private static void strongForMethod2(Map<String, String> maps) {   
  •         Set<Entry<String, String>> set = maps.entrySet();   
  •         for (Entry<String, String> entry : set) {   
  •             String key = entry.getKey();   
  •             String value = entry.getValue();   
  •             System.out.println(key + " : " + value);   
  •         }   
  •     }   
  •    
  •     private static void strongForMethod1(Map<String, String> maps) {   
  •         Set<String> set = maps.keySet();   
  •         for (String s : set) {   
  •             String key = s;   
  •             String value = maps.get(s);   
  •             System.out.println(key + " : " + value);   
  •         }   
  •     }   
  •    
  •     // 使用entrySet()方法,获取maps集合中的每一个键值对,   
  •     private static void traditionalMethod2(Map<String, String> maps) {   
  •         Set<Map.Entry<String, String>> sets = maps.entrySet();   
  •         // 取得迭代器遍历出对应的值。   
  •         Iterator<Entry<String, String>> it = sets.iterator();   
  •         while (it.hasNext()) {   
  •             Map.Entry<String, String> entry = (Entry<String, String>) it.next();   
  •             String key = entry.getKey();   
  •             String value = entry.getValue();   
  •             System.out.println(key + " : " + value);   
  •         }   
  •     }   
  •    
  •     // 使用keySet()方法,获取maps集合中的所有键,遍历键取得所对应的值。   
  •     private static void traditionalMethod1(Map<String, String> maps) {   
  •         Set<String> sets = maps.keySet();   
  •         // 取得迭代器遍历出对应的值。   
  •         Iterator<String> it = sets.iterator();   
  •         while (it.hasNext()) {   
  •             String key = it.next();   
  •             String value = maps.get(key);   
  •             System.out.println(key + " : " + value);   
  •         }   
  •     }   
  • }  


2 个回复

倒序浏览
加油加油
回复 使用道具 举报
增强for一般用于集合遍历,其实他是的底层还是迭代器
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马