数组和List之间的转换之复杂案例

如果你需要一个更复杂的转换,比如从一个包含自定义对象的数组转换为一个包含相同对象的List,或者从包含不同数据类型的List转换为一个特定类型的数组,那么你需要进行一些额外的步骤。

自定义对象数组转换为List
假设你有一个自定义的Person类,并且你有一个Person对象的数组,你想要将它转换为一个List。这很简单,因为Arrays.asList()和Stream API都可以处理这种情况。

java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

class Person {
String name;
int age;
// 构造函数、getter、setter等
}

public class CustomObjectArrayToListExample {
public static void main(String[] args) {
Person[] persons = {
new Person(“Alice”, 30),
new Person(“Bob”, 25),
new Person(“Charlie”, 35)
};

    // 使用Arrays.asList()(注意:这里返回的List仍然是固定大小的)  
    List<Person> personList1 = Arrays.asList(persons);  

    // 使用Stream API(更灵活且可返回可修改的List)  
    List<Person> personList2 = Arrays.stream(persons).collect(Collectors.toList());  

    // 遍历List  
    for (Person person : personList2) {  
        System.out.println(person.name + ": " + person.age);  
    }  
}  

}
List转换为自定义对象数组
如果你有一个List并且想要将其转换为一个Person数组,你可以使用List的toArray()方法,但你需要提供一个正确类型的数组,或者你需要对结果进行类型转换。

java
import java.util.ArrayList;
import java.util.List;

public class ListToCustomObjectArrayExample {
public static void main(String[] args) {
List personList = new ArrayList<>();
personList.add(new Person(“Alice”, 30));
personList.add(new Person(“Bob”, 25));
personList.add(new Person(“Charlie”, 35));

    // 转换为Person数组  
    Person[] personsArray = personList.toArray(new Person[0]);  

    // 遍历数组  
    for (Person person : personsArray) {  
        System.out.println(person.name + ": " + person.age);  
    }  
}  

}
List中的元素类型转换并转换为数组
如果你有一个包含多种类型元素的List(例如List),并且你想要将其转换为一个特定类型的数组(例如String[]),你需要遍历List并进行类型检查和转换。

java
import java.util.ArrayList;
import java.util.List;

public class ListToTypedArrayExample {
public static void main(String[] args) {
List mixedList = new ArrayList<>();
mixedList.add(“Hello”);
mixedList.add(123); // 这将不会被转换为String
mixedList.add(“World”);

    // 转换为String数组(仅包括可转换为String的元素)  
    List<String> stringList = new ArrayList<>();  
    for (Object obj : mixedList) {  
        if (obj instanceof String) {  
            stringList.add((String) obj);  
        }  
    }  

    // 将String List转换为String数组  
    String[] stringArray = stringList.toArray(new String[0]);  

    // 遍历数组  
    for (String str : stringArray) {  
        System.out.println(str);  
    }  
}  

}
在上面的例子中,我们遍历了mixedList,只将可以安全地转换为String类型的元素添加到了stringList中,然后将stringList转换为了String[]数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值