易截截图软件、单文件、免安装、纯绿色、仅160KB

在java中使用委托实现map/filter

在java中,假设你有一个user 对象的list,此user对象封装了用户的id, first name, last name and age. 然后你想调用一个web service(eg. UserService.deleteUsersByIds(List<Integer> userIds) 去删除数据库中指定的这些user。  听起来似乎不太困难,不是么? 你所需要只是将 List<User> 转化成List<Integer>。 所有你先写下下面的代码:
 List<Integer> ids = new ArrayList<Integer>(users.size());
for (User user : users) {
ids.append(user.getId());
}

 
然后你继续使用您的ID list,这一切都非常好。
但是,两分钟后,你会发现自己不得不为获取一个String型的用户名列表而重新定义一个API方法。
List<String> names = new ArrayList<String>(users.size());
for (User user : users) {
names.append(new StringBuilder(user.getFirstNam()).append(" ").append("user.getLastName()));
}

或许你还需要一个21岁以下的user list。
List<User> newUsers= new ArrayList<User>(users.size());
for (User user : users) {
if(user.getAge()<21){
newUsers.add(user);
}
}
  
或许你还需要的更多。。。。
很快你发现这件事情变得很乏味。
根据目前情形,你会发现这里有2个非常重要的功能 map 和filter
1.map(coll, f):遍历集合coll, 在集合中调用f的方法,将f的方法处理结果装入一个集合返回(也就是调用f中的方法组装另外一个需要的集合,然后返回)。
2.filter(coll, f):遍历集合coll, 在集合中调用f的方法,当f(element) returns true 将结果装入一个集合返回。
为了达到上面得到Id 的List我们可能需要这样中
<fromType, ToType> List<ToType> map(ArrayList<fromType> list) {
List<ToType> retval = new ArrayList<ToType>(list.size());
for (fromType item : list) {
[...]
}
return retval;
}

这样看起来似乎跟下面的code没有什么区别。
1 List<Integer> ids = new ArrayList<Integer>(users.size());
2
for (User user : users) {
3
  ids.append(user.getId());
4
}
由于java不提供语言级别的委托,因此我们需要为这个委派提供一个接口
1
interface


相关文档:

JavaScript与Java的区别

JavaScript是一种通用的、基于原型的、面向对象的脚本语言,而脚本语言就是指可以和Html语言混合使用的语言
1.JavaScript与Java的区别
     A. JavaScript是解释型的语言,当程序执行的时候,浏览器一边解释一边执行。而Java是编译型的语言,必须经过编译才能执行
     B. 代码 ......

mina之性能缺陷及bug,java高性能游戏服务器何在?

Apache MINA (mina-2.0.0-M6源码为例):
    我们使用mina nio tcp最常用的样例如下:
        NioSocketAcceptor acceptor = new NioSocketAcceptor(/*NioProcessorPool's size*/);
        DefaultIoFilterChainBuilder cha ......

How to use Java as NT SERVICE


 service = new
 Service();  
        thread=new
 Thread(service);  
        try
  
        {  
   ......

关于java中的URL类的使用一个问题


      我使用URL类来访问FTP服务器,当地址中没有中文时没有问题,但是
    当ftp中的文件夹有中文时,就无法访问了,我试过encoder和decoder类,都不行,有什么解决方法么?
            URL now = new URL("ftp://202.204.208.124/软件/");
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号