cuiyi's blog(崔毅 crazycy)

记录点滴 鉴往事之得失 以资于发展
数据加载中……

java.util.List 真的会用么?看能作对否

public class DynamicRemove {
  
private List<String> generateList() {
  String[] figures 
= new String[]{"1""2""3""4""5""6""7""8""9"};
  List
<String> list = new ArrayList<String>();
    
for (String figure : figures) 
      list.add(figure);
  
return list;
}

public void test1() {
  List
<String> loads = generateList();  
  
if (null != loads && !loads.isEmpty()) {
    
for (String load : loads) {
      System.out.println(load);            
      
if (Integer.valueOf(load).intValue() ==3){
        loads.remove(load);                        System.out.println(
"====" + loads.get(2));
      }
    }
            
    System.out.println(
"size" + loads.size());    
  }
}
    
    
public static void main(String[] args) {
  DynamicRemove test 
= new DynamicRemove();
  test.test1();
}

输出为:
你答对了么

这样呢?
嘿嘿,是这样么
输出呢?
答案


posted on 2007-09-14 19:55 crazycy 阅读(6065) 评论(11)  编辑  收藏 所属分类: JavaSE语言

评论

# re: java.util.List 真的会用么?看能作对否  回复  更多评论   

能解释一下吗?用foreach和用原始的方法有什么不同吗?
2008-03-15 08:39 | 日月雨林

# re: java.util.List 真的会用么?看能作对否  回复  更多评论   

@日月雨林

没有不同,无非是范型的使用,可以减少遍历编码量和类型的转化
2008-03-15 16:31 | crazycy

# re: java.util.List 真的会用么?看能作对否  回复  更多评论   

今天我又遇到了一次,又一次把自己给害了很惨淡
14:01:49,063 INFO [STDOUT] ------->>>>>>>>objList.size : 21
14:01:49,069 ERROR [CxcExceptionHandler] Uncaught Error
java.lang.IndexOutOfBoundsException: Index: 19, Size: 19

Code::

List objList = (List)getList(paramId1, paramId2);
System.out.println("------->>>>>>>>objList.size : " + objList.size());
if (1) {
for (int i = 0, n = objList.size(); i < n; i++) {
XBean dBean = (XBean)objList.get(i);
Integer objId = (Integer)dBean.get("xid");
if (objId.compareTo(new Integer("100")) == 0
|| (objId.compareTo(new Integer("200")) == 0)
objList.remove(dBean);
}
}//end if block
2008-03-17 14:10 | crazycy

# re: java.util.List 真的会用么?看能作对否  回复  更多评论   

个人觉得,不是说所有的封装都是好的。
一个东西在给你带来好处的同时,也会给你带来副作用。
2008-03-25 14:27 | coffee

# re: java.util.List 真的会用么?看能作对否  回复  更多评论   

与时俱进,实践中摸索,大家都认可的东西,并得以证实有谱,可以跟进
2008-03-25 20:36 | crazycy

# re: java.util.List 真的会用么?看能作对否  回复  更多评论   

我的意思是,在使用一个新的东西的时候,一定要评估他的不足,切不可因为被鼓吹的好而忽略了它的副作用,这种忽略往往会造成你所设计的东西的先天不足而存在致命风险。
2008-03-26 09:13 | coffee

# re: java.util.List 真的会用么?看能作对否  回复  更多评论   

晓得你的意思。
但就此而言,代价无非是熟悉的挑战度,和学习理解的成本。
如果这个都觉得困难,那阅读现在很多的与技术相关的东西都将有困难。
颇会感慨:廉颇老已,虽能饭
2008-03-26 10:55 | crazycy

# re: java.util.List 真的会用么?看能作对否  回复  更多评论   

如果认为代价是熟悉的挑战,学习理解的成本,那就是误解我的意思了。这些虽然会成为风险,却往往都是可以见得到的,容易被人评估到的。
而最可怕的风险则是隐藏的先天不足的。以Hibernate为例,他提高了开发进度,降低了业务逻辑与数据库操作的耦合,增加了系统的层次性,但是却也带来了性能上的先天不足。对性能要求很高的就应该考虑使用其他方案。

每一种便捷,必然是牺牲另外一种优点。决策的时候不仅仅要看到其优点,也要看到其缺点。才能确保不会落下先天的残疾。

2008-03-26 17:25 | coffee

# re: java.util.List 真的会用么?看能作对否  回复  更多评论   

呵呵,就你说的展开,任何的东西都是一种折衷,比如说技术,往往在一个可快速开发和长期维护的平衡上做取舍,这也是许多很快速开发的语言难以撼动java的一个因素。

而优缺点,却针对的应用的环境和背景;如果作一个简单的应用,却大动干戈的采用框架,不可取;如果做一个做完功能ok不需要维护的项目,快速开发如hibernate是一个很好的选择;如果是遗留系统或者一个长远一些如产品一样的系统,就需要充分考虑。

而如hibernate之类的,并非性能不高,因为结合cache技术,可以达到比jdbc还好的效果,而且相对来说容易维护。但是这个有一个前提,就是你的团队里有能真正搞定hibernate的人,而非仅仅如大多数人停留在会用或者能用这个层次上。

技术的选择,优缺点很重要,但是所面临的应用场景更为重要,相比之下,过度考虑也不是一个可取之路。
2008-03-26 17:34 | crazycy

# re: java.util.List 真的会用么?看能作对否  回复  更多评论   

拜同。
2008-03-27 15:53 | coffee

# re: java.util.List 真的会用么?看能作对否  回复  更多评论   

size1
size2
CurrentModifyException
2009-06-02 14:37 | ff

只有注册用户登录后才能发表评论。


网站导航: