社区
Java SE
帖子详情
List
lst = new ArrayList() 与 ArrayList
lst = new ... 的区别?
highscore2
2007-10-07 04:36:53
我见到很多人这样写代码:
List <String > lst = new ArrayList();
为什么不直接写成以下:
ArrayList<String> lst = new ArrayList();
这两种写法实际上有区别吗??
...全文
9050
18
打赏
收藏
List <String > lst = new ArrayList() 与 ArrayList<String> lst = new ... 的区别?
我见到很多人这样写代码: List lst = new ArrayList(); 为什么不直接写成以下: ArrayList lst = new ArrayList(); 这两种写法实际上有区别吗??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
smallnickey
2012-09-23
打赏
举报
回复
真好!谢了,有帮助。
xiewilliam3
2011-09-09
打赏
举报
回复
bucuo
myeclipseing
2011-08-29
打赏
举报
回复
二楼说的很对 学习了
mf1123
2008-05-05
打赏
举报
回复
谢谢啊
highscore2
2007-11-06
打赏
举报
回复
谢谢!
ckangtai
2007-11-06
打赏
举报
回复
又学到东西咯。。谢谢
hivvyeah
2007-10-24
打赏
举报
回复
支持2楼,
goooooood
火龙果被占用了
2007-10-24
打赏
举报
回复
对底层来说,这种转换的时间几乎可以忽略不计,这个是实现多态的基础,
如果了解工厂方法设计模式,只有这样才能达到要求,这种做法也是面向对
象程序设计三大特性之一——多态。如果我哪天不用 ArrayList 了,要用
其他的 LinkedList 了,这样我只要在变量声明部分修改就可以了,下面
的代码可以一行不动。
实际上这样做,在 Java 中还有很多,像 JDBC 中的 Connection、
PreparedStatment、ResultSet 等等,这些都是接口,如果不去研究 JDBC
驱动提供的源代码,根本就不会知道其具体的实现类是哪一个,对于开发人员
来说,只要知道这些接口中的方法,以及该如何使用这些方法就足够了,不需
要去考虑底层的实现,正因为如此,换一种数据库只要更改其连接驱动和连接
字符串就够了,其他的根本用不着改。
当然了,如果要使用某个类中的独有的方法,那只能使用第二种写法了。
zhao_tk
2007-10-24
打赏
举报
回复
List是接口,ArrayList是JDK里提供的一个实现类。
wjn811
2007-10-24
打赏
举报
回复
受益匪浅
我现在才理解这样声明的意义
2楼正解
gx66551317
2007-10-24
打赏
举报
回复
又学到东西了,谢谢!!
爱java更爱生活
2007-10-23
打赏
举报
回复
2楼讲的好,学习
chenyifei211
2007-10-11
打赏
举报
回复
GOOD,楼上说得很好,谢谢! 但不知道这样做的呀是否对性能有影响?? 因为这样做底层可能会多做一些转换的工作.
对性能不会产生任何影响,这就是使用接口的优雅所在
醉面韦陀
2007-10-11
打赏
举报
回复
帮顶,2楼正解!!!
yaoho_11
2007-10-11
打赏
举报
回复
顶
highscore2
2007-10-11
打赏
举报
回复
GOOD,楼上说得很好,谢谢! 但不知道这样做的呀是否对性能有影响?? 因为这样做底层可能会多做一些转换的工作.
Norris_Zhang
2007-10-07
打赏
举报
回复
List是接口,ArrayList是JDK里提供的一个实现类。
List<String> list = new ArrayList<String>();
编译时类型是List,运行时类型是ArrayList,而List接口的实现类不只有ArrayList一个,用一个List类型的引用这是“面向接口编程”,好处有很多,提但是尽量面向接口编程,这里只说一个这样写的好处:
以后我们会用到很多不是我们写的类,我们叫第三方类库,在类库里面很可能会返回一个这样的列表,但是他未必会返给你一个ArrayList,没准是人家自己写的一个实现类都说不准,那么我们面向接口编程,不需要了解是什么实现类,我们都把它们当List接收过来就好了,我们就当成List来用。提高程序的透明性,让底层的实现对上层使用者封装。
johnsoncr
2007-10-07
打赏
举报
回复
List <String > lst = new ArrayList();
这是把ArrayList()向上转型为List,这时假的lst不能用ArrayList中新增的方法(即不是List接口的方法),如get()
ArrayList <String > lst = new ArrayList();
如果我们在知道要创建一个ArrayList()的话,用这个方式创建就可以使用ArrayList里面的全部方法
集合合并代码
public static void main(
String
[] args) { // TODO Auto-generated method stub
List
lst
1=
new
Array
List
();
List
lst
2=
new
Array
List
(); UserBean b1=
new
UserBean(); UserBean b2=
new
UserBean(); UserBean b3=
new
UserBean(); UserBean b4=
new
UserBean(); UserBean b11=
new
UserBean(); UserBean b12=
new
UserBean(); UserBean b13=
new
UserBean(); b1.setName("q"); b1.setJob("IT"); b2.setName("w"); b2.setJob("IT test"); b3.setName("t"); b3.setJob("IT"); b4.setName("q"); b4.setAge("20"); b11.setName("t"); b11.setAge("19"); b11.setJob("IT2"); b12.setName("O"); b13.setName("w"); b13.setAge("10"); b13.setJob("PM");
List
lst
=
new
Array
List
();
lst
.addAll(
lst
1);
lst
.addAll(
lst
2); System.out.println("合并前值:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"+
lst
.size()); print
Lst
(
lst
); // UserBean bbb=null; for(int i=0;i<
lst
.size();i++) { UserBean b=(UserBean)
lst
.get(i);
String
s=b.getName(); for(int j=i+1;j<
lst
.size();j++) { UserBean bb=(UserBean)
lst
.get(j);
String
s1=bb.getName(); if(s.equals(s1)) { UserBean bbb=
new
UserBean(); bbb.setName(s1); if(s.equals("t")||s1.equals("t")) System.out.println("o在这!"); if(null!=b.getAge()&&!"".equals(b.getAge())) bbb.setAge(b.getAge()); if(null!=bb.getAge()&&!"".equals(bb.getAge())) bbb.setAge(bb.getAge()); if(null!=b.getJob()&&!"".equals(b.getJob())) bbb.setJob(b.getJob()); if(null!=bb.getJob()&&!"".equals(bb.getJob())) bbb.setJob(bb.getJob());
lst
.remove(bb);
lst
.remove(i);
lst
.add(i, bbb); continue; } }
List
lst
=
new
Array
List
();与
Array
List
lst
=
new
Array
List
();
区别
List
是接口,
Array
List
是JDK里提供的一个实现类。
List
<
String
>
list
=
new
Array
List
<
String
>();
编译时类型是
List
,运行时类型是
Array
List
,而
List
接口的实现类不只有
Array
List
一个,用一个
List
类型的引用这是“面向接口编程”,好处有很多,但是尽量面向接口编程,这里只说一个这样写的好处:
以后我们会用到很多不是我们写的类,我们叫第三方类库,在类库里面很可能会返回一个
java object 转
list
_java - 如何将
Array
List
转换为
Array
List
<
String
>?
java - 如何将
Array
List
转换为
Array
List
?
Array
List
list
=
new
Array
List
();
list
.add(1);
list
.add("Java");
list
.add(3.14);System.out.println(
list
.to
String
());我试过了:
Array
List
list
2 = (
String
)
list
;但它给了我一个编译错误。rtf ...
常见
List
<
String
> 与
Array
List
<
String
>之间
常见的语句:
List
list
=
new
Array
List
(); 而不是写成:
Array
List
list
=
new
Array
List
(); ????????
List
是接口,
Array
List
是JDK里提供的一个实现类。 编译时类型是
List
,运行时类型是
Array
List
, 而
List
接口的实现类不只有
Array
List
一个, 用一个
List
类型的引用这是
Java中将
Array
List
<
String
>转换成
String
的方法
import java.util.*; public class test { public static void main(
String
[] args) {
Array
List
<
String
>
lst
=
new
Array
List
<>();
lst
.add("1");
lst
.add("2"); ...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章