您的位置:首页 > 编程语言 > Java开发

java动态数组、集合类、以及数组辅助工具的简单使用

2014-04-03 21:05 603 查看
一、封装好的动态数组:

java、C#在定义数组的时候需要指定数组长度,如果数组需要可变长度,那么使用ArrayList或其他的集合类来解决,Vector是同步的而ArrayList是非同步的,Vector性能差些。

ArrayList 是可变长度的,初始化是10个长度,没有赋值的都是null, 超过10个后变成20个了,一直按10的倍数来递增的。见下图:



java为ArrayList封装了很多使用的方法,如add等,这里就不再赘述。

二、自定义动态字串数组:

正如ArrayList的内部实现,所谓的可变长度,就是往里面放值直到放满后再重新new一个更加长的数组,把之前放的值重新再放一次,这个时候就有剩余的空间继续放值了。根据这个思路,我们可以自定义一个工具类,来动态的改变数组的长度,给数组添加元素。

private static String[] insert(String[] arr, String str)
    {
        int size = arr.length;        
        String[] tmp = new String[size + 1];      
        
        System.arraycopy(arr, 0, tmp, 0, size);
        
        tmp[size] = str;        
        return tmp;
    }


这样我们在使用的时候可以给数组随意初始化一个长度,然后利用该工具动态改变数组,而不用担心越界的问题。

综合上面的总结,通过下面的代码来对比一下各自的使用:

List<TemplateDetails> templateDetailsList=commonEao.findResultListByEqual(TemplateDetails.class, equalFields);
		
		//固定长度
		String[] pks= new String[templateDetailsList.size()];
		//数组集合
		List<String > pksList=new ArrayList<String>();
		Vector< String > pksVector= new Vector<String>();	
		
		for (TemplateDetails templateDetails : templateDetailsList) {
			//给已确定长度的数组添加元素
			ArrayUtils.add(pks, templateDetails.getId());
			//动态改变数组长度并增加元素
			pks = insert(pks,templateDetails.getId() );
			//ArrayList动态数组的集合
			pksList.add(templateDetails.getId() );
			//安全了线程,降低了性能,jdk1.5版本(过时)
			pksVector.add(templateDetails.getId());			 			
		}
三、数组操作工具类:

工具类一般都是静态的:

System.arraycopy(arr, 0, tmp, 0, size);
ArrayUtils.add(pks, templateDetails.getId());
自定义的封装:
pks = insert(pks,templateDetails.getId() );
不怕不知道就怕不知道,这些工具类,还有很多其他的操作,具有小巧灵活强大的特点,往往会起到很关键的作用,这里就不再赘述这些工具的其他的方法。在编程中,通过了解一些内部实现,可以自定义一些小辅助工具,更方便程序开发。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: