لتحويل Map
إلى List
باستخدام Java 9 Stream API، يمكنك استخدام flatMap
لتحويل كل Entry
في ال Map
إلى TestSession
ومن ثم جمعها جميعًا في List
. الكود يمكن أن يكون كالتالي:
javaimport java.util.List;
import java.util.Map;
import java.util.AbstractMap.SimpleEntry;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Map>> inputData = Map.of(
"ABC", List.of(new SimpleEntry<>(Parameter.Foo, "hello"), new SimpleEntry<>(Parameter.Bar, "bye")),
"DEF", List.of(new SimpleEntry<>(Parameter.Baz, "hello1"), new SimpleEntry<>(Parameter.Foo, "bye1"))
);
List testList = inputData.entrySet().stream()
.flatMap(entry -> entry.getValue().stream()
.map(innerEntry -> new TestSession(entry.getKey(), innerEntry.getKey(), innerEntry.getValue())))
.collect(Collectors.toList());
// Print testList
testList.forEach(System.out::println);
}
private static class TestSession {
final String mServiceName;
final Parameter mParameter;
final String mData;
public TestSession(final String aServiceName, final Parameter aParameter, final String aData) {
mServiceName = aServiceName;
mParameter = aParameter;
mData = aData;
}
@Override
public String toString() {
return "TestSession{" +
"mServiceName='" + mServiceName + '\'' +
", mParameter=" + mParameter +
", mData='" + mData + '\'' +
'}';
}
}
enum Parameter {
Foo,
Bar,
Baz
}
}
هذا الكود يستخدم flatMap
لتحويل كل Entry
في inputData
إلى TestSession
، حيث يتم استخدام قيمة المفتاح كـ mServiceName
وقيم Parameter
وقيم String
من كل Entry
لإنشاء TestSession
.
مقالات ذات صلة
المزيد من المعلومات
بالطبع! في هذا الكود، يتم استخدام flatMap
لتحويل Map
إلى List
باستخدام Java 9 Stream API.
- تُمثِّل
Map
مدخلات البيانات، حيث تحتوي كل مفتاح على قائمة من>> inputData SimpleEntry
التي تحتوي علىParameter
وString
. - تحتوي
class TestSession
على ثلاثة حقول:mServiceName
(اسم الخدمة) وmParameter
(المعامل) وmData
(البيانات). - تُستخدم
flatMap
لتحويل قائمة القيم (List
) المرتبطة بكل مفتاح إلى تدفق من> TestSession
، حيث يُنشئ كلTestSession
باستخدام قيم المفتاح والمعامل والبيانات منSimpleEntry
. - يتم جمع جميع
TestSession
فيList
باستخدامcollect(Collectors.toList())
. toString
يتم استخدامها لطباعة كلTestSession
بشكل جميل.
يمكنك تجربة تشغيل الكود لرؤية النتائج المخرجة.