gpt4 book ai didi

java - 我可以对不同的容器(List、Set、Map)使用一个变量吗?

转载 作者:行者123 更新时间:2023-11-29 03:24:24 26 4
gpt4 key购买 nike

需要更改容器类型:

import java.util.*;

public class MyContainers {

public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("title1");
list.add("title2");
System.out.println(list.indexOf("title1"));

// change container type
Set<String> set = new HashSet<String>(list);
}
}

但最好只使用一个变量。我写了这样的代码,但有一个限制(见评论):

import java.util.*;


public class MyContainers {

public static void main(String[] args) {
Collection<String> list = new ArrayList<String>();
list.add("title1");
list.add("title1");

System.out.println(list);

// Can't call indexOf because there are no such method in inteface Collection
//System.out.println(list.indexOf("title1"));

// change container type
list = new HashSet<String>(list);
System.out.println(list);

}
}

请帮我解决这些问题:

  1. 是否可以对不同容器使用一个变量并使用全套容器方法?
  2. 是否可以将 List 转换为 Map?请显示代码示例。

最佳答案

如果某个方法在一个接口(interface) 中不存在,那么它不存在是有原因的。不要为了拥有它而尝试有一个变通办法,这通常会导致麻烦。例如,为 Set 使用 indexOf 方法没有任何意义。 界面

但是,有时构造一个与现有对象类型不同的新对象可能很有用,例如,如果您有一个 ArrayList 并且您不想重复,它确实将其转换为 HashSet 是有意义的。

您应该选择最适合您需要的接口(interface),如果找不到,您可以随时实现自己的类。

关于java - 我可以对不同的容器(List、Set、Map)使用一个变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21810771/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com