首页 > 代码库 > Android开发点点滴滴——一些基础的但有用的知识(3)

Android开发点点滴滴——一些基础的但有用的知识(3)

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");
不过你的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方法 排序了。