Java - 各种遍历
此篇文章主要记录各种不同类型数据的遍历
一、遍历List
- 使用迭代器Iterator进行遍历
- for循环遍历
- foreach循环遍历
@Test void contextLoads() { List<Object> list=new ArrayList<>(); list.add("Hi"); list.add("I"); list.add("am"); list.add("Lucy"); // Iterator迭代器遍历 System.out.println("Iterator迭代器遍历结果:"); Iterator<Object> itlist=list.iterator(); while (itlist.hasNext()){ System.out.print(itlist.next()); System.out.print(" "); } // for循环遍历 System.out.println(); System.out.println("for循环遍历结果:"); for (int i=0;i<list.size();i++){ System.out.print(list.get(i)); System.out.print(" "); } // foreach循环遍历 System.out.println(); System.out.println("foreach循环遍历结果:"); for (Object element:list) { System.out.print(element); System.out.print(" "); } }
输出结果:
二、遍历Set
- 使用迭代器Iterator进行遍历
- foreach循环遍历
- !!!不能直接使用for循环遍历,因为Set类接口没有获取元素的方法(好像可以转化成List再使用for循环遍历,不是很确定)
@Test void contextLoads() { Set<Object> set=new HashSet<>(); set.add("Hi"); set.add("I"); set.add("am"); set.add("Lucy"); // Iterator迭代器遍历 System.out.println("Iterator迭代器遍历结果:"); Iterator<Object> itset=set.iterator(); while (itset.hasNext()){ System.out.print(itset.next()); System.out.print(" "); } // foreach循环遍历 System.out.println(); System.out.println("foreach循环遍历结果:"); for (Object element:set) { System.out.print(element); System.out.print(" "); } System.out.println(); }
三、遍历Map
# map声明 Map<Object,Object> map=new HashMap<>(); map.put("id","001"); map.put("name","张三"); map.put("age",18);
- 通过Map.keySet获取key,然后用map.get(Key)来获取对应的值
// 通过Map.keySet取值遍历 for (Object key:map.keySet()) { System.out.println(key + " : " + map.get(key)); }
- 通过Map.enteySet和iterator迭代器相结合,然后使用getKey和getValue获取key和value
@Test void contextLoads() { Map<String, String> map = new HashMap<>(); map.put("id", "001"); map.put("name", "张三"); map.put("age", "18"); Set<Map.Entry<String,String>> entrySet=map.entrySet(); Iterator<Map.Entry<String,String>> iterator=entrySet.iterator(); while (iterator.hasNext()) { Map.Entry<String,String> entry1 = iterator.next(); System.out.println(entry1.getKey() + " : " + entry1.getValue()); } }
- 通过Map.enteySet遍历key和value
// 推荐,尤其容量大时,通过通过entrySet遍历,但是不使用Iterator遍历 for (Map.Entry<Object,Object> entry2 : map.entrySet()) { System.out.println(entry2.getKey() + " : " + entry2.getValue()); }
- 通过Map.values()遍历所有的values,但是不能遍历key
// 通过Map.values()遍历值,但是不能遍历key for (Object value : map.values()) { System.out.println(value); }
四、遍历数组
- 使用for循环
- 使用foreach循环
- 如果是要输出数组的话,可以使用toString方法
@Test void contextLoads() { String[] arr={"n","a","m","e"}; // for循环 for (int i=0;i< arr.length;i++){ System.out.print(arr[i] + " "); } System.out.println(); // foreach循环 for (String element:arr) { System.out.print(element + " "); } System.out.println(); // Arrays.toString()方法 System.out.println(Arrays.toString(arr)); }