2011年7月11日

请慎用java的File#renameTo(File)方法

摘要: 以前我一直以为File#renameTo(File)方法与OS下面的 move/mv 命令是相同的,可以达到改名、移动文件的目的。不过后来经常发现问题:File#renameTo(File)方法会返回失败(false),文件没有移动,又查不出原因,再后来干脆弃用该方法,自己实现一个copy方法,问题倒是再也没有出现过。昨天老板同学又遇到这个问题,File#renameTo(File)方法在windows下面工作的好好的,在linux下偶尔又失灵了。回到家我扫了一遍JDK中File#renameTo(File)方法的源代码,发现它调用的是一个本地的方法(native method),无法再跟踪下 阅读全文

posted @ 2011-07-11 10:37 GongTao 阅读(8603) 评论(0) 推荐(2) 编辑

2011年7月1日

集合操作的利器:CollectionUtils

摘要: 使用 CollectionUtils 中四个方法之一执行集合操作.这四种分别是 union(),intersection();disjunction(); subtract();下列例子就是演示了如何使用上述四个方法处理两个 Collection;注: 这些方法都是数学的集合算法import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; import org.apache.commons.collections.CollectionUtils 阅读全文

posted @ 2011-07-01 11:07 GongTao 阅读(9277) 评论(0) 推荐(0) 编辑

容易忽视但是功能灰常强大的Java API(五. 二分查找)

摘要: 五. 二分查找二分查找是一个高效的查找算法,在java的集合对象中也提供了二分查找的算法,如下面的java api接口:java.util.Arrays.binarySearch(java.lang.Object,java.lang.Object,java.util.Comparator) java.util.Arrays.binarySearch(java.lang.Object[], java.lang.Object)上面列出的是两个泛型接口,还有其它不同参数类型的重载函数没有在此列出,请参考java api文档。 阅读全文

posted @ 2011-07-01 10:49 GongTao 阅读(1632) 评论(0) 推荐(0) 编辑

容易忽视但是功能灰常强大的Java API(四. 排序的集合)

摘要: 四. 排序的集合在java中,提供了一个(可能还有其它的)可以进行排序的集合对象TreeSet,它实现了SortedSet集合接口,对于普通类型的集合元素,它们默认是按照字母顺序排列的,对于复杂类型的集合元素,需要为集合对象指定比较器。看下面的例子:public class TreeSetTest { private static Comparator comparator = new Comparator() { public int compare(Node o1, Node o2) { int diff = o1.getValue() - o2.getValue(); if (diff 阅读全文

posted @ 2011-07-01 10:48 GongTao 阅读(417) 评论(0) 推荐(0) 编辑

容易忽视但是功能灰常强大的Java API(三. 集合运算)

摘要: 三. 集合运算在实现数据挖掘一些算法或者是利用空间向量模型来发现相似文档的时候,会遇到求两个集合的交集的情况。以前一般是采用比较笨拙的办法,依次遍历其中一个集合的元素,然后判断它是否包含在另一个集合中。这样做非常机械繁琐,代码编得让人心烦,其实java的api中提供了对集合进行交、并、差运算的功能,灰常强大!看下面的例子:public class SetOpt { public List intersect(List ls, List ls2) { List list = new ArrayList(Arrays.asList(new Object[ls.size()])); Collecti 阅读全文

posted @ 2011-07-01 10:48 GongTao 阅读(685) 评论(0) 推荐(1) 编辑

容易忽视但是功能灰常强大的Java API(二. 读写对象)

摘要: 二. 读写对象有时候你会遇到这样的情况:从数据集合中读取数据,解析数据,然后封装成对象,再把对象放到一个集合中,对集合对象进行操作,程序结束。第二次需要运行程序时,又按如上的操作流程做一遍。第三次,每四次…每一次都执行相同的操作。又或者会遇到这样的情况:程序运行过程中会产生一些对象的集合,我们只对这个对象集合感兴趣,而对它是如何生成的不感兴趣。程序结束后第二次你又需要这个对象集合时,又要重新生成这个对象集合。当你遇到这样的情况时,你有没有想过这样可能会造成系统资源的浪费,会影响功能实现的效率,那你有没有考虑过一个更好的做法来解决这个问题。事实上,这个问题可以通过java提供的实现对象读写的两个 阅读全文

posted @ 2011-07-01 10:47 GongTao 阅读(397) 评论(0) 推荐(0) 编辑

容易忽视但是功能灰常强大的Java API(一、排序)

摘要: 这几天看了一些用java编写的程序代码,发现了很多以前不知道的api功能。原以为自己还算得上是一个java语言的中级学习者,现在看来自己只是一个java初级学习者,对java的认识一直只是停留在java的表层,解决一些应用问题只是毫无新意地将一些已知的常用接口、数据结构等翻来覆去地使用,没有更深地去了解这门语言。事实上java提供了很多功能非常强大的接口,能够很方便地为我们解决一些实际的问题,下面就具体介绍几个我最近了解的java API功能。一. 排序在编写java程序的时候,我们经常都会遇到排序的问题,没有深入学习过java的人一般会选择两种做法,第一种是在网上找一段代码改改后就用在自己的 阅读全文

posted @ 2011-07-01 10:47 GongTao 阅读(2703) 评论(1) 推荐(0) 编辑

【转】Collections的copy()方法和ArrayList的大小问题

摘要: Collections的copy()方法和ArrayList的大小问题偶然看到了Collections的copy(List desc,List src)方法.当时就想这个方法和初始化一个List desc=new ArrayList(List c)【参数必须实现Collection接口】的区别。两者的差别很大,后者是一个浅拷贝,只是对源list的元素进行拷贝,拷贝的只是引用。拷贝后两个list的元素(引用)不同,但是引用所指向的对象是一样的。即是两个list的每个元素指向的还是通一内存。然而前者是深拷贝,不光拷贝的是src的元素(引用),src内每个元素的所指向的对象都进行一次拷贝。即是两个l 阅读全文

posted @ 2011-07-01 10:44 GongTao 阅读(462) 评论(0) 推荐(0) 编辑

2011年6月9日

Android开发之ListView 适配器(Adapter)优化

摘要: 来源:www.ideasandroid.com原文: http://www.ideasandroid.com/archives/295ListView的Adapter的作用如下图所示:Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。想过没有? 在我们的列表有1000000项时会是什么样的?是不是会占用极大的系统资源?先看看下面的代码:public View getView(int position, View convertView, ViewGroup parent) {View ite. 阅读全文

posted @ 2011-06-09 15:00 GongTao 阅读(260) 评论(0) 推荐(0) 编辑

导航