List ArrayList Map HashMap

List<UsercardDto> usercardDtos = Lists.newArrayList();
List<UsercardDto> usercardDtos1 = new ArrayList<UsercardDto>();
Map<String,Object> param = Maps.newHashMap();
Map<String, Object> paraMap = new HashMap<String, Object>();
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

编程是要面向对象编程,针对抽象(接口),而非具体
[color=red]List 是接口,ArrayList是实现[/color]
实现List接口的有ArrayList、LinkedList、Vector等,所以用哪个就直接new 一个接口实现
这是一种很好的设计模式.一个接口有多种实现,这种写法是java面向对象的一种思想,[color=darkred]依赖倒置原则[/color],即依赖于抽象不依赖于实现(具体)。
给调用者提供的应该是接口或者抽象类,而实现者可以实现或者继承接口或者抽象类来满足调用者,这样调用者不必知道实现者怎样操作,实现者也可以根据具体情况去实现,这样去除了耦合。这就是java设计模式的基础思想之一。
从Java语法上,这种方式是使用接口引用指向具体实现,这样大大提高了代码使用的灵活性。
比如,你若希望用LinkedList的实现来替代ArrayList的话,只需改动一行即可:
List list = new LinkedList();
而程序中的其它部分不需要改动,这样比较灵活,不会失去通用性。
不过有的时候,你如果能确定后边用的全部是ArrayList,最好使用ArrayList list = new ArrayList();
ArrayList list = new ArrayList()
将ArrayList 改为了List,并且返回了这个List
那么以后用的烦恼就是

[java] view plaincopy
if([color=green]list instanceOf java.util.ArrayList[/color]){
//do something
}

else if(list instanceOf java.util.LinkedList){
//error
}

else if(list instanceOf cn.com.bigc.myList){
//do;……some xp not defined in List
}

……

如果你要想把这个if else去掉,那么,你还必须再写几个类。呵呵,这样的代价是不值得的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值