java把foreach遍历出来的数据存入到map中
时间: 2024-05-08 09:17:09 浏览: 136
可以使用foreach循环遍历数组或集合,并将每个元素存储到Map中。下面是一个示例代码:
```
String[] names = {"Alice", "Bob", "Charlie"};
Map<Integer, String> map = new HashMap<>();
int index = 0;
for (String name : names) {
map.put(index, name);
index++;
}
// 输出Map中的数据
for (Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
```
输出结果为:
```
0: Alice
1: Bob
2: Charlie
```
在上面的代码中,我们首先定义了一个字符串数组names和一个空的HashMap。然后,我们使用foreach循环遍历names数组,并将每个元素存储到Map中。为了保持顺序,我们使用一个整数变量index来作为键值。最后,我们使用另一个foreach循环输出Map中的数据。
相关问题
java使用序列流完成存入2个学生信息到students.txt文件, 然后将其内容再读取出来, 使用我们的Stream流遍历学生的所有学号信息
好的,我明白了。以下是将2个学生信息存入 students.txt 文件,并使用 Stream 流遍历学号信息的 Java 代码:
```
import java.io.*;
import java.util.Arrays;
public class Student {
private String id;
private String name;
private int age;
public Student(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age=" + age +
'}';
}
public static void main(String[] args) throws IOException {
// 创建学生对象
Student student1 = new Student("001", "张三", 18);
Student student2 = new Student("002", "李四", 20);
// 将学生信息写入文件
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("students.txt"));
oos.writeObject(student1);
oos.writeObject(student2);
oos.close();
// 读取文件中的学生信息,并使用 Stream 流遍历所有学生的学号信息
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("students.txt"));
Student[] students = new Student[2];
for (int i = 0; i < 2; i++) {
try {
students[i] = (Student) ois.readObject();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
Arrays.stream(students).map(Student::getId).forEach(System.out::println);
ois.close();
}
}
```
这段代码中,我们首先创建了一个 `Student` 类,包含了学号、姓名和年龄信息。然后通过 `ObjectOutputStream` 将两个学生对象写入到 `students.txt` 文件中,接着通过 `ObjectInputStream` 读取文件中的学生信息,并通过 Stream 流遍历所有学生的学号信息并输出。注意,在 `ObjectOutputStream` 和 `ObjectInputStream` 创建时,它们会自动创建一个序列化流和反序列化流,所以我们不需要再额外创建序列化流。
public Map<String, List<GoodsSku>> compareList(List<GoodsSku> list1, List<GoodsSku> list2) { Map<String, List<GoodsSku>> map = new HashMap<String, List<GoodsSku>>(); List<GoodsSku> duplicateList = new ArrayList<>(); // 重复的skuAttribute字段的值 List<GoodsSku> uniqueList = new ArrayList<>(); // 不重复的skuAttribute字段的值 // 将list1和list2的skuAttribute字段的值分割、排序后存入set中 Set<String> set1 = new HashSet<>(); Set<String> set2 = new HashSet<>(); list1.forEach(item -> set1.add(Arrays.stream(item.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":")))); list2.forEach(item -> set2.add(Arrays.stream(item.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":")))); // 遍历list1,如果list2中包含当前元素,则说明该skuAttribute字段的值重复,将其加入结果集中;否则加入uniqueList中 for (GoodsSku sku : list1) { String sortedSku = Arrays.stream(sku.getSkuAttribute().split(":")).sorted().collect(Collectors.joining(":")); if (set2.contains(sortedSku)) { duplicateList.add(sku); } else { uniqueList.add(sku); } } map.put("duplicateList", duplicateList); map.put("uniqueList", uniqueList); return map; }是什么意思
这段代码的作用是比较两个 `GoodsSku` 对象列表 `list1` 和 `list2` 中的 `skuAttribute` 字段的值,将比较结果保存到一个 `Map` 中并返回。
具体实现逻辑如下:
1. 创建一个 `Map` 对象 `map` 用于保存比较结果,其中包含两个键值对:`"duplicateList"` 和 `"uniqueList"`。`"duplicateList"` 对应的值是一个 `List`,表示重复的 `skuAttribute` 字段的值所对应的 `GoodsSku` 对象列表;`"uniqueList"` 对应的值也是一个 `List`,表示不重复的 `skuAttribute` 字段的值所对应的 `GoodsSku` 对象列表。
2. 创建两个 `Set` 对象 `set1` 和 `set2`,分别用于存储 `list1` 和 `list2` 中的 `skuAttribute` 字段的值按 ":" 分割后排序后的结果,以去重。
3. 分别遍历 `list1` 和 `list2`,将每个 `GoodsSku` 对象的 `skuAttribute` 字段的值按 ":" 分割后排序后的结果存入 `set1` 和 `set2` 中。
4. 遍历 `list1` 中的每个 `GoodsSku` 对象,将其 `skuAttribute` 字段的值按 ":" 分割后排序后的结果与 `set2` 进行比较,如果存在相同的值,则将该 `GoodsSku` 对象加入到 `duplicateList` 中,否则加入到 `uniqueList` 中。
5. 将 `duplicateList` 和 `uniqueList` 分别作为值,放入 `map` 中对应的键值对中。
6. 返回 `map` 对象。
综上所述,该方法的作用是比较两个 `GoodsSku` 对象列表中的 `skuAttribute` 字段的值,将结果分类保存到 `Map` 对象中,并返回该对象。
阅读全文