有必要改變容器類型:我可以使用一個變量用於不同的容器(List,Set,Map)嗎?
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);
}
}
請幫我這樣的問題:
- 是否有可能使用一個變量不同的容器,並使用全套容器方法?
- 是否有可能將列表轉換爲
Map
? 請顯示一個代碼示例。
你不能擁有它!如果你想爲不同的集合使用一個通用的類型,你必須接受,你將無法調用某些集合中不存在的方法(例如'indexOf'對於' Set')。 –
[1]如果您定義每個類的方法行爲,並且[2]如果您定義了期望如何轉換它(奇數是關鍵,偶數是值?)。你看,你可以有一個「一個界面統治他們全部」,但你必須首先指定每種方法對每個結構的含義。 – Leo
如何只使用一個變量「更好」。這實際上更令人困惑,因爲更難推理你的代碼。 「我在看哪一套?」 –