1.遍历List(三种方法)
这里以ArrayLsit为例演示
// 举例
List<String> list = new ArrayList<String>();
list.add("Tom");
list.add("Tim");
list.add("Lucy");
// 1.第一种方法:普通for循环遍历
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
// 2.第二种方法:加强for循环遍历
for (String name : list) {
System.out.println(name);
}
// 3.第三种方法:通过迭代器遍历
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
2.遍历Set(两种方法)
遍历set和遍历List但是因为Set中没有get(int index)方法,所以这里不能用普通的for循环遍历
这里以HashSet为例作为演示
Set<Integer> nums = new HashSet<Integer>();
nums.add(1);
nums.add(2);
nums.add(3);
// 1.加强for循环
for (Integer num : nums) {
System.out.println(num);
}
// 2.迭代器遍历
Iterator iterator = nums.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
3.遍历Map
以HashMap为例作为演示
Map<String, Integer> scores = new HashMap<String, Integer>();
scores.put("tom", 100);
scores.put("lucy", 80);
int value;
// 1.1 增强for循环遍历Map中的key。
// 这里使用keySet()方法把Map中的key提取出来存储到一个名为keys的Set集合中
// 然后通过遍历keys集合,调用Map中的get(Object key)方法得到Map中key对应的value
Set<String> keys = scores.keySet();
for (String key : keys) {
value = scores.get(key);
System.out.println(value);
}
// 1.2 使用迭代器遍历Set集合
// 同样调用Map中的get(Object key)方法得到Map中key对应的value
Iterator<String> iterator = keys.iterator();
while (iterator.hasNext()) {
value = scores.get(iterator.next());
System.out.println(value);
}
// 使用把Entry存储HashMap中的键和值
Set<Entry<String, Integer>> entries = scores.entrySet();
// 2.1 使用加强for循环遍历Set,直接用Entry的getKey()和getValue()方法得到键和值
for (Entry<String, Integer> entry : entries) {
String key = entry.getKey();
value = entry.getValue();
System.out.println("key: " + key);
System.out.println("value: " + value);
}
// 2.2 使用迭代器遍历Set得到每个Entry,再使用getKey()和getValue()得到键和值
Iterator<Entry<String, Integer>> iterator2 = entries.iterator();
while(iterator2.hasNext()) {
Entry<String, Integer> entry = iterator2.next();
String key = entry.getKey();
value = entry.getValue();
System.out.println("key: " + key);
System.out.println("value: " + value);
}
// 这里注意:迭代器每执行一次next()方法,迭代器就会指向下一个元素
// 如果使用下面的方式打印,只会打印Map中第一个元素中的key和第二个元素的value
// 因为这里调用了两次next()方法
// System.out.println("key: " + iterator2.next().getKey());
// System.out.println("value: " + iterator2.next().getValue());