List、Set、Map、数组之间的相互转换详细解析
List、Set、Map和数组的定义
List
List是一个特殊的集合,它是有序的、可重复的,并且允许null元素。它的常用实现类有:ArrayList、LinkedList等。
Set
Set是一个集合,它的特点是不允许重复元素,它的元素是无序的,并且允许null元素。它的常用实现类有:HashSet、TreeSet等。
Map
Map是一种"键值对"映射关系,它的键和值都可以是任意对象,它的键是唯一的,而值可以重复。它的常用实现类有:HashMap、Hashtable、TreeMap等。
数组
数组是一组相同类型的元素的集合,它具有固定的长度,并且可以存放任意类型的元素。
List、Set、Map、数组之间的转换
数组转List
将数组转换为List,可以使用Arrays类的asList()方法。示例代码如下:
String[] array = {"apple", "banana", "orange"};
List<String> list = Arrays.asList(array);
List转数组
将List转换为数组,可以使用toArray()方法。示例代码如下:
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
String[] array = list.toArray(new String[0]);
List转Set
将List转换为Set,可以使用HashSet或TreeSet类的构造方法。示例代码如下:
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
Set<String> set = new HashSet<>(list); //使用HashSet
Set<String> treeSet = new TreeSet<>(list); //使用TreeSet
Set转List
将Set转换为List,可以使用ArrayList或LinkedList类的构造方法。示例代码如下:
Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("orange");
List<String> list = new ArrayList<>(set); //使用ArrayList
List<String> linkedList = new LinkedList<>(set); //使用LinkedList
Map转List
将Map转换为List,可以把Map的key和value转换为两个单独的List。示例代码如下:
Map<String, String> map = new HashMap<>();
map.put("apple", "red");
map.put("banana", "yellow");
map.put("orange", "orange");
List<String> keys = new ArrayList<>(map.keySet());
List<String> values = new ArrayList<>(map.values());
List转Map
将List转换为Map,需要保证List中的每个元素都是一个“键值对”,可以使用Java8引入的stream()方法和Collectors.toMap()方法。示例代码如下:
List<String> list = Arrays.asList("apple", "red", "banana", "yellow", "orange", "orange");
Map<String, String> map = IntStream.range(0, list.size() / 2)
.boxed()
.collect(Collectors.toMap(i -> list.get(i * 2), i -> list.get(i * 2 + 1)));
示例说明
以下是将List转换为Map的一个示例。假设我们有一个Person类:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
我们有一个Person类的List,现在需要将List转换为Map,Key为Person的name,Value为Person的age,代码如下:
List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", 18));
personList.add(new Person("Jerry", 20));
personList.add(new Person("Tony", 21));
Map<String, Integer> personMap = personList.stream()
.collect(Collectors.toMap(Person::getName, Person::getAge));
这个示例中,使用Java8引入的stream()方法和Collectors.toMap()方法将List转换为了Map。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:list,set,map,数组之间的相互转换详细解析 - Python技术站