请问这两种写法有什么区别
LinkedList<String> li = new LinkedList<String>();
和List<String> li = new LinkedList<String>();达人..................
LinkedList<String> li = new LinkedList<String>();
和List<String> li = new LinkedList<String>();达人..................
引用别人的比喻:
Map是接口,hashMap是Map的一种实现。接口不能被实例化。
Map map=new HashMap(); 就是将map实例化成一个hashMap。这样做的好处是调用者不需要知道map具体的实现,map接口与具体实现的映射java帮你做了。打个比方,你是一个头头,手下有几个人:张三,李四等等。你需要手下做一件事情,你关心的是有没有人做,而不关心到底是谁去做,你只需要喊一声:“来人!”具体的是哪个人进来帮你做事无所谓。
如果说这样写: HashMap map = new HashMap();就相当于你指定要张三做事:“来张三!”
就是这样。
第一种针对实现编程,你明确的声明需要的是LinkedList的实现。
第二种针对接口编程,你声明下面的程序需要一种实现List接口的数据结构,至于是什么具体的实现则不关心。
LinkedList <String> li = new LinkedList <String>(); 这样li有了更多的操作方法。
而List <String> li = new LinkedList <String>(); 只能用List接口中定义的方法。
可第二种方法的可维护性强,比如现在分析发现用ArrayList(也实现了List接口)数据结构更有效,只需要改为List <String> li = new ArrayList <String>();下面的代码完全不用修改!
而第一种方法则不然。
非常感谢三位达人的说明,小的已经大体上明白是怎么回事了
我想再问问:
List <String> li = new LinkedList <String>();
List <String> li = new ArrayList <String>();
这两种方法是不是只是声明的list的数据结构不同?其他的没什么区别?