java动态数组、集合类、以及数组辅助工具的简单使用
2014-04-03 21:05
603 查看
一、封装好的动态数组:
java、C#在定义数组的时候需要指定数组长度,如果数组需要可变长度,那么使用ArrayList或其他的集合类来解决,Vector是同步的而ArrayList是非同步的,Vector性能差些。
ArrayList 是可变长度的,初始化是10个长度,没有赋值的都是null, 超过10个后变成20个了,一直按10的倍数来递增的。见下图:
java为ArrayList封装了很多使用的方法,如add等,这里就不再赘述。
二、自定义动态字串数组:
正如ArrayList的内部实现,所谓的可变长度,就是往里面放值直到放满后再重新new一个更加长的数组,把之前放的值重新再放一次,这个时候就有剩余的空间继续放值了。根据这个思路,我们可以自定义一个工具类,来动态的改变数组的长度,给数组添加元素。
这样我们在使用的时候可以给数组随意初始化一个长度,然后利用该工具动态改变数组,而不用担心越界的问题。
综合上面的总结,通过下面的代码来对比一下各自的使用:
工具类一般都是静态的:
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() );不怕不知道就怕不知道,这些工具类,还有很多其他的操作,具有小巧灵活强大的特点,往往会起到很关键的作用,这里就不再赘述这些工具的其他的方法。在编程中,通过了解一些内部实现,可以自定义一些小辅助工具,更方便程序开发。
相关文章推荐
- eclipse编辑器,怎么创建PHP和JAVA的工程项目?
- java中的堆栈
- Java序列化问题
- JAVA编程思想学习第一篇の对象导论
- java23种设计模式的有趣解释
- spring与mybatis三种整合方法
- Spring AOP
- Eclipse(PHP、JAVA)的快捷键大全
- springIoc
- eclipse有时新建一个PHP文件或者是HTML文件没有快捷键太麻烦了,总要用鼠标点 怎么创建自己的快捷键呢?
- 全面解析Java中的String数据类型
- java中HashSet详解
- java中的this关键字再复习,super()方法再复习,区别
- 关于Spring中找不到<mvc:resources/>标签的解决办法
- Struts2中使用json遇到的一个小问题
- java核心之内容分配管理
- java中HashMap详解
- java接口和抽象类
- Java反射机制的使用
- JAVA类实现序列化的方法