List<string>与string[]

本文详细介绍了List与string[]的区别与联系,包括各自的优缺点及如何相互转化。重点阐述了List作为泛型集合的强大功能,以及在不同场景下的适用情况。

一、是什么?

     List<>是一个泛型对象,实例化后相当于是一个List对象。List对象内部可以聚合若干个(理论上不限制大小)同类型对象,并提供很多方便的方法来提供一些基本操作,可以理解为一个封装好的链表对象

     string[]就是简单的强类型化数组。     

二、区别和联系

    区别

         string[]表示字符串数组,创建后大小固定,不能改变元素的个数。

         List<string>表示泛型集合,集合中的每个元素都是字符串,创建后可以动态改变元素的个数。

    联系:

         二者都可以存储数据并且二者可以相互转化,通过.ToList()转化为集合;.ToArray()转化为数组。如:

<span style="font-size:18px;">从System.String[]转到List<System.String>
 
System.String[]str={"str","string","abc"};
 
List<System.String>listS=new List<System.String>(str);</span>

从List<System.String>转到System.String[]
 
List<System.String>listS=new List<System.String>();
 
listS.Add("str");
 
listS.Add("hello");
 
System.String[] str=listS.ToArray();
 

三、优缺点

        List优点:

        作为泛型集合本身就具有强大的功能,如:

       1)类型安全

       2)不用频繁的拆箱装箱

       3)更灵活和方便

        List缺点:开销大

        

        string[]优点

       1)如果元素比较固定和少,用string[]更加灵活和方便

       2)开销相对于list就相对小的多

        string[]缺点

       1)由于其大小固定,如果数据不确定或是庞大就会很不灵活。      

四、总结

        综上所述,不管是list还是string[]都有其优缺点,所以在恰当的地遇到恰当的它们就够了!

### Java 中 `List<List<String>>` 数据结构的使用 在 Java 中,`List<List<String>>` 是一种嵌套列表的数据结构,允许创建字符串列表的列表。这种结构非常适合表示表格数据或多维数组。 #### 创建和初始化 `List<List<String>>` 可以利用 `ArrayList` 来实现 `List<List<String>>`,因为 `ArrayList` 实现了 `List` 接口并提供了动态调整大小的功能: ```java import java.util.ArrayList; import java.util.List; // 初始化外层列表 List<List<String>> listOfLists = new ArrayList<>(); ``` 为了向这个二维列表添加元素,先要创建内部的 `List<String>` 并填充一些值,之后再将其加入到外部列表中[^1]。 ```java // 添加第一个子列表 List<String> sublistOne = new ArrayList<>(Arrays.asList("apple", "banana")); listOfLists.add(sublistOne); // 添加第二个子列表 List<String> sublistTwo = new ArrayList<>(Arrays.asList("carrot", "pea")); listOfLists.add(sublistTwo); ``` #### 访问 `List<List<String>>` 中的元素 访问特定位置上的元素可以通过指定两个索引来完成——首先是外层列表中的索引,其次是内层列表中的索引: ```java String element = listOfLists.get(0).get(1); // 获取的是 "banana" System.out.println(element); ``` #### 遍历 `List<List<String>>` 遍历整个 `List<List<String>>` 可以通过双重循环来实现;或者更简洁地采用 Java 8 Stream API 方式来进行操作[^2]: ```java for (List<String> innerList : listOfLists) { for (String item : innerList) { System.out.print(item + " "); } System.out.println(); } // 或者使用Stream API listOfLists.forEach(innerList -> innerList.forEach(System.out::println)); ``` 当涉及到过滤或映射这样的复杂逻辑时,Stream API 提供了一个更加优雅的选择,能够简化代码的同时提高可读性和维护性[^3].
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值