Android开发点点滴滴——一些基础的但有用的知识(3)
时间:2014-05-21 09:41:55
收藏:0
阅读:286
1.long型数据的计算
之前在写到关于一个时间的小软件时,System.currentTimeMillis()返回的是从1970年1月1日到现在的毫秒数,是long型的,需要给这个加上一个数字。
比如:
long curTime = System.currentTimeMillis();// 获取当前时间 long deadLineTime = curTime+(30*24*60*60*1000); //long deadLineTime30day = curTime+(long)30*24*60*60*1000;
这样计算出来的结果是不对的,因为30*24*60*60*1000这样计算出来的结果默认是整型的常量,这个已经超出范围了,所以会将这个截取成整型。如需正确结果,需要在这个数前加个强制转换(long)
2.在list遍历的时候用remove
在list用foreach遍历的时候用list.remove()直接删除,那么会报错,弹出这个异常ConcurrentModificationException。那么如何在遍历的时候删除集合元素呢?
使用迭代器删除
Iterator<Object> iterator = list.iterator(); while(iterator .hasNext()) { Object obj = iterator.next(); //做判断 iterator.remove(); }</span>
3.intent传递list
网上有很多方法,这种亲测好用。
一般传递的不是int型或者string型的List,而是自定义的。那么就需要这样:
你要传的集合类:List<Object> list
intent.putExtra("lalala", (Serializable)list) ;
接受的时候用
list=(List<Object>) getIntent().getSerializableExtra("lalala");
list=(List<Object>) getIntent().getSerializableExtra("lalala");
不过你的Object需要实现Serializable接口
,基本上对于你的数据类不会做什么改变(反正每次我就只是 implements Serializable,其他都没变动^0^)
4.集合类排序
比如要给一个集合类List<YourObject> list 排序,那么需要让YourObject实现Comparable接口
然后实现compareTo方法。
比如按时间排序,YourObject里有个date成员,是String型的,存储的日期的字符串。那么只需要在compartTo方法中这样写
@Override public int compareTo(YourObject another) { return date.compareTo(another.date); }</span>那么List<YourObject> list 就可以调用sort方法 排序了。
评论(0)