关于List,为什么要这样定义,而不用直接用ArrayList
List list = new ArrayList();
这种写法是java面向对象的一种思想,即依赖于抽象不依赖于实现。 给调用者提供的应该是接口或者抽象类, 而实现者可以实现或者继承接口或者抽象类来满足调用者, 这样调用者不必知道实现者怎样操作,实现者也可以根据具体情况去实现,这样去除了耦合。 这就是java设计模式的基础思想之一。
使用List,你就可以不必关注用的是ArrayList,还是Vector。例如在下面的代码中
List getList(){
List list = new ArrayList();
return list;
}
客户程序不必关心你用的是ArrayList还是Vector,哪天你因为需要改成
List getList(){
List list = new Vector();
return list;
}
客户程序并不受影响,你的方法的返回值也不必改变,但如果你用
Vector getList(){
Vector list = new Vector();
return list;
}
你看,首先你的方法的返回值必须作相应改变,调用该方法的客户程序也得改,这可能牵涉一系列改动,而用List则省去了这些麻烦。
从这个例子可以推而广之,在new一个新对象时,左边尽量使用接口(或者抽象类),以保持代码的最大灵活性。
分享到:
相关推荐
使用对象ArrayList填充DataGrid,C#源代码ArrayList MyList = new ArrayList();
B .List myList=new ArrayList(); C.ArrayList myList=new List(); D. List myList=new List(); 2.paint()方法使用哪种类型的参数? A Graphics B Graphics2D C String D Color 3.指出正确的表达式 A ...
List list1 = new ArrayList(); System.out.println(list1.size());//0 List list2 = null; System.out.println(list2.size());//NullPointerException 上面表示的是一个empty array,在堆中已经存在,只是其中没有...
java List排序工具类 使用示例: ... List<Person> list = new ArrayList(); list.add(person); list.add(person1); list.add(person2); list.add(person3); list.add(person4); return list; }
ArrayList<String> list=new ArrayList(); 2、ArrayList(int initialCapacity) //这是第三个构造方法,构造了一个指定大小但内容为空的链表。 //initialCapacity参数就是初始容量大小。 //如果你需要创建一...
场景:有三个List变量,分别为list1、list2、list3 List,Object>> list1 = new ArrayList(); List,Object>> list2 = new ArrayList(); List,Object>> list3 = new ArrayList(); 现在需要根据一个输入的字符"list1....
在工作中经常遇到C#数组、ArrayList、List、Dictionary存取数据,但是该选择哪种类型进行存储数据,对于初学者的我一直不知道该怎么取舍。于是抽空好好看了下他们的用法和比较,在这里总结下来,后面有需要改进的...
List<String> list1 = new ArrayList(); String str1 = g1.toJson(list1); //json 转list Gson g2 = new Gson(); List<String> list2 = g2.fromJson(str1, new TypeToken<List<String>>(){}.getType());
List<Student> list = new ArrayList(); Random rnd = new Random(); for (int i = 0; i ; i++) { Student student = new Student(); student.setCj(rnd.nextDouble()*100); student.setName("name"+i); list....
list = new ArrayList(); DetailEntity d1 = new DetailEntity("私念", "2010-11-11", "你好!", R.layout.list_say_me_item); list.add(d1); DetailEntity d2 = new DetailEntity("美女", "2010-11-11...
List pageList = new ArrayList(); for (int i = pageStartRow; i ; i++) { pageList.add(list.get(i)); } return pageList; } /** * 获取上一页的对象集合 * * @return List 对象集合 */...
TagSelectorView TagSelectorView A tag selector with animation 已更新v2.0 注意2.0与1.0并不兼容,2.0之前最后版本号为 1.2.2.3 ... Setup repositories { ...List dataBeanList = new ArrayList(); for (int i
ArrayList a = new ArrayList(); a.Add(“a”);//这里”a”可以改成你要取出的字符串 a.Add(“b”); 运行后a就相当于一个数组a[0]=”a”,a[1]=”b 推荐用泛型 代码如下:List<String> list = new List(); for (int i...
仿某团list里嵌套list\ package com.zl.listview; import java.util.ArrayList; import java.util.HashMap; import com.kjy.kjylistview.R; import android.app.Activity; import android.content.Intent; import...
List<VideoOptionModel> list1 = new ArrayList(); list1.add(videoOptionMode0l); list1.add(videoOptionMode02); list1.add(videoOptionMode03); list1.add(videoOptionMode04); list1.add(videoOptionMode...
字符串数组 排序
System.Collections.ArrayList list = new System.Collections.ArrayList(); for (int i = 3; i <= 6; i++) { for (int j = 1; j <= 13; j++) { Poker p = new Poker(); switch (j) { case 1: p = new ...
List list=new ArrayList(); list.add(10); list.add(2); list.add(34); //对list数组进行自然排序 Collections.sort(list); //依次检索输出list的所有对象 // for(int i=0;i<list.size();i++){ // System....
List currentList[] =new ArrayList[3]; // 当前的出牌 List playerList[] = new ArrayList[3]; // 定义3个玩家表 List lordList;//地主牌 Card card[] = new Card[56]; // 定义54张牌 JTextField ...