普通for循环遍历hashmap
时间: 2023-06-29 17:11:00 浏览: 174
在Java中,可以使用以下代码使用普通for循环遍历HashMap:
```
HashMap<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
for (Map.Entry<String, String> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key + " : " + value);
}
```
在这个例子中,我们创建了一个HashMap对象,然后使用put()方法添加了两个键值对。然后使用for循环遍历HashMap中的每个键值对,并使用getKey()和getValue()方法获取键和值。最后,我们将键和值打印到控制台上。
相关问题
hashmap遍历的几种方式
哈希表(HashMap)在遍历时主要有以下几种方式:
1. **迭代器(Iterator)**:HashMap提供了一个`entrySet()`方法,返回一个键值对的集合。通过迭代器,你可以按照顺序访问每个条目,即键值对。这是最常用的遍历方式,示例如下:
```java
for (Map.Entry<String, Object> entry : hashMap.entrySet()) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
```
2. **增强for循环(foreach)**:也可以使用增强for循环来简化代码,但这种方式内部也是基于迭代器的:
```java
for (String key : hashMap.keySet()) {
System.out.println(key + ": " + hashMap.get(key));
}
```
3. **普通for循环结合get()方法**:如果你需要获取特定索引位置的数据,可以使用数组的方式遍历,虽然HashMap不是数组,但底层实现了类似的功能:
```java
int size = hashMap.size();
for (int i = 0; i < size; i++) {
String key = hashMap.keyAt(i); // 注意:keyAt方法仅适用于无null元素的情况
Object value = hashMap.valueAt(i);
//...
}
```
4. **如果数据有序(如LinkedHashMap)**:LinkedHashMap还提供了`values()`、`keys()`等方法,它们返回的迭代器会保持插入顺序。
使用ArrayList集合,对其添加10个不同的元素,并使用四种遍历方式遍历该集合。四种遍历方式分别为使用正常for循环,应用索引遍历使用迭代器遍历使用增强for循环使用Lamada表达式(forEach),选择合适的Map集合保存5位学员的学号和姓名,然后按学号的自然顺序的倒序将这些键值对一一打印出来。
使用ArrayList集合添加10个不同的元素并遍历:
```java
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
list.add("watermelon");
list.add("mango");
list.add("peach");
list.add("pear");
list.add("grape");
list.add("pineapple");
list.add("kiwi");
// 使用普通的for循环遍历
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");
}
System.out.println();
// 使用索引遍历
int size = list.size();
for (int i = 0; i < size; i++) {
System.out.print(list.get(i) + " ");
}
System.out.println();
// 使用迭代器遍历
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
System.out.println();
// 使用增强for循环遍历
for (String s : list) {
System.out.print(s + " ");
}
System.out.println();
}
}
```
运行结果:
```
apple banana orange watermelon mango peach pear grape pineapple kiwi
apple banana orange watermelon mango peach pear grape pineapple kiwi
apple banana orange watermelon mango peach pear grape pineapple kiwi
apple banana orange watermelon mango peach pear grape pineapple kiwi
```
使用Map集合保存5位学员的学号和姓名,并按学号的自然顺序的倒序将这些键值对一一打印出来:
```java
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class MapTest {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("1001", "张三");
map.put("1002", "李四");
map.put("1003", "王五");
map.put("1004", "赵六");
map.put("1005", "钱七");
// 按照学号的自然顺序的倒序排序
Map<String, String> sortedMap = new TreeMap<>((o1, o2) -> o2.compareTo(o1));
sortedMap.putAll(map);
// 遍历打印
for (Map.Entry<String, String> entry : sortedMap.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
}
```
运行结果:
```
1005 钱七
1004 赵六
1003 王五
1002 李四
1001 张三
```
阅读全文