chasing鱼 2024-04-28 11:51 采纳率: 47.1%
浏览 3
已结题

list和hashMap

List list = new ArrayList<>(new HashMap());可以这样定义吗?泛型为啥是String而不是Map(String,String)?
List list = new ArrayList<>(new HashSet());

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-28 11:51
    关注

    引自免费微信小程序:皆我百晓生

    在Java中,当您尝试创建一个列表并将其初始化为一个新的哈希映射时,语法上是可以这么做的,就像下面这样:

    List<Map<String, String>> list = new ArrayList<>(new HashMap<>());
    

    这里我们创建了一个List,其元素类型是Map<String, String>。这意味着这个列表将存储键值对的映射,其中键和值都是字符串。

    然而,如果您想要创建一个列表,其中每个元素都是一个字符串,而不是一个整个映射,那么应该像这样定义:

    List<String> list = new ArrayList<>();
    

    对于第二个例子:

    List list = new ArrayList<>(new HashSet<>());
    

    这里我们创建了一个未指定类型的List,并且使用了HashSet作为初始容量。虽然这样做在语法上没有错误,但为了提高代码可读性,建议指定列表的泛型参数,例如:

    List<String> list = new ArrayList<>(new HashSet<>());
    

    这表明列表中的元素将是字符串。如果集合中的元素不是字符串,而是其他类型,比如整数,你应该相应地调整泛型参数,例如 List<Integer>

    总结一下,正确的代码应该是这样的:

    // 如果你想存储Map<String, String>
    List<Map<String, String>> mapList = new ArrayList<>();
    
    // 如果你想存储String
    List<String> stringList = new ArrayList<>();
    
    // 使用HashSet初始化(推荐指定泛型)
    List<String> stringListFromSet = new ArrayList<>(new HashSet<>());
    

    以上就是关于如何正确地使用ListHashMap的解释。如果你有更具体的问题或需要进一步的帮助,请随时告诉我。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月6日
  • 已采纳回答 4月28日
  • 创建了问题 4月28日