oruji.github.io
oruji.github.ioPersian Tutorials
ایجاد: 1396/11/3 22:12 - ویرایش: 1396/11/22 23:01
A A

آموزش تبدیل Map به لیست (List) در جاوا 8

در این آموزش از کتاب برخط جاوا، نحوه و چگونگی تبدیل Map به لیست (List) را در زبان برنامه نویسی جاوا و همچنین نسخه 8 از آن، به همراه مثال مرور خواهیم کرد.

کد زیر را در نظر بگیرید

Map<String, String> myMap = new HashMap<>();

تبدیل تمام کلیدهای Map به یک لیست:

List<String> result = new ArrayList(myMap.keySet());

تبدیل تمام مقادیر یا value ها به لیست:

List<string> result2 = new ArrayList(myMap.values());

تبدیل تمامی کلیدهای Map به لیست در جاوا 8

List<string> result3 = myMap.keySet().stream() .collect(Collectors.toList());

تبدیل تمام مقادیر یا value ها به لیست در جاوا 8:

List<String> result4 = myMap.values().stream() .collect(Collectors.toList());

به نظر می رسد در جاوا نسخه 8 باید کد بیشتری استفاده کنیم، ولی در عوض شما می توانید از ویژگی های Stream مانند filter و غیره استفاده کنید:

List<string> result5 = myMap.values().stream() .filter(x -> !"apple".equalsIgnoreCase(x)) .collect(Collectors.toList());

1. Map به List

برای تبدیل یک Map ساده به لیست تنها کافیست از کد زیر استفاده کنید

package org.amoozesh; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ConvertMapToList { public static void main(String[] args) { Map<Integer, String> myMap = new HashMap<>(); myMap.put(10, "apple"); myMap.put(20, "orange"); myMap.put(30, "banana"); myMap.put(40, "watermelon"); myMap.put(50, "dragonfruit"); System.out.println("\n1. Export Map Key to List..."); List<Integer> result = new ArrayList(myMap.keySet()); result.forEach(System.out::println); System.out.println("\n2. Export Map Value to List..."); List<String> result2 = new ArrayList(myMap.values()); result2.forEach(System.out::println); } }

خروجی

1. Export Map Key to List... 50 20 40 10 30 2. Export Map Value to List... dragonfruit orange watermelon apple banana

تبدیل در جاوا 8

برای این تبدیل در جاوا 8 شما می توانید Map را به یک stream تبدیل کرده، پردازش کرده و سپس آن را به صورت یک لیست بر گردانید:

package org.amoozesh; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class ConvertMapToList { public static void main(String[] args) { Map<Integer, String> myVar = new HashMap<>(); myVar.put(10, "apple"); myVar.put(20, "orange"); myVar.put(30, "banana"); myVar.put(40, "watermelon"); myVar.put(50, "dragonfruit"); System.out.println("\n1. Export keys to List..."); List<Integer> result = myVar.keySet().stream() .collect(Collectors.toList()); result.forEach(System.out::println); System.out.println("\n2. Export Values to List..."); List<String> result2 = myVar.values().stream() .collect(Collectors.toList()); result2.forEach(System.out::println); System.out.println("\n3. Export Values to List..., say no to banana"); List<String> result3 = myVar.keySet().stream() .filter(x -> !"banana".equalsIgnoreCase(x)) .collect(Collectors.toList()); result3.forEach(System.out::println); } }

خروجی

1. Export Map Key to List... 50 20 40 10 30 2. Export Map Value to List... dragonfruit orange watermelon apple banana 3. Export Map Value to List..., say no to banana dragonfruit orange watermelon apple

تبدیل Map به 2 لیست (List) در جاوا 8

مثال زیر کمی زیاده روی است! که با استفاده از map.entrySet() یک Map را به 2 لیست تبدیل می کند:

package org.amoozesh; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class ConvertMapToList { public static void main(String[] args) { Map<Integer, String> mapVar = new HashMap<>(); mapVar.put(10, "apple"); mapVar.put(20, "orange"); mapVar.put(30, "banana"); mapVar.put(40, "watermelon"); mapVar.put(50, "dragonfruit"); // split a map into 2 List List<Integer> resultSortedKey = new ArrayList<>(); List<String> resultValues = mapVar.entrySet().stream() //sort a Map by key and stored in resultSortedKey .sorted(Map.Entry.<Integer, String>comparingByKey().reversed()) .peek(e -> resultSortedKey.add(e.getKey())) .map(x -> x.getValue()) // filter banana and return it to resultValues .filter(x -> !"banana".equalsIgnoreCase(x)) .collect(Collectors.toList()); resultSortedKey.forEach(System.out::println); resultValues.forEach(System.out::println); } }

خروجی

//resultSortedKey 50 40 30 20 10 //resultValues dragonfruit watermelon orange apple