java定义长度不固定的数组
最近正在做一个小项目 需要用到长度不固定的数组,上网差了N多资料,总觉得不符合自己的要求,果断自己写了一个,总体思想还是不变的。上代码·····package com.zcf.graduation.utils;java --------------------编程问答-------------------- 你干什么不直接用ARRAYLIST。 --------------------编程问答-------------------- ArrayList中的toCharArray()方法 --------------------编程问答-------------------- 数组还是有一些功能ArrayList是实现不了的,
public class Array {
private int length;
private Object[] array;
private Object[] old;
private int index;
public Array add(Object obj){
if(this.array == null || this.array.length <= 0){
this.index = 0;
this.length = 1;
}else{
this.index++;
this.length++;
}
this.old = this.array;
this.array = new Object[this.length];
if(this.old != null && this.old.length > 0){
for(int i = 0;i<this.old.length;i++){
this.array[i] = this.old[i];
}
}
this.array[this.index] = obj;
return this;
}
public Object[] getArray() {
return array;
}
public String toString(){
StringBuffer sb = new StringBuffer();
for(Object obj : array){
sb.append(String.valueOf(obj));
}
return sb.toString();
}
}
楼主的方法其实就是等于自己写了一个list
ArrayList的本质就是数组 --------------------编程问答--------------------
++ --------------------编程问答-------------------- 这活生生的一个 ArrayList 的雏形啊。 --------------------编程问答-------------------- 楼主说说 arraylist 不符合要求的地方啊 --------------------编程问答-------------------- 还查了N多资料... --------------------编程问答-------------------- 2 --------------------编程问答--------------------
++ --------------------编程问答-------------------- 炫耀贴,为什么不用System.arraycopy --------------------编程问答-------------------- 呃 当时也没想那么多 我想过用arrayList 但是担心arrayList toArray后list中的的元素顺序会改变 所以就这样写了个 至于写这篇文章 我只是想怕自己忘记以及让有这方面需要的童鞋参考一下 并没有什么炫耀的意思 --------------------编程问答-------------------- ++ --------------------编程问答-------------------- 谁说说什么地方数组能用arraylist不能用? --------------------编程问答--------------------
-- --------------------编程问答-------------------- arraylist就是动态数组, --------------------编程问答--------------------
list接口的实现有很多种,arraylist是有序的,并且toarray也是有序的。如果对顺序敏感,可以用linkedlist。
--------------------编程问答--------------------
+1.
而且LZ这个效率很低 每次ADD都要重新生成一个数组 ArrayList每次不够的时候长度加倍 是不会像LZ这样每次都需要重新创建的 --------------------编程问答--------------------
LZ也是用的数组。 数组的什么功能arraylist不能实现? --------------------编程问答-------------------- 其实arrayList这个真的很难理解啊 --------------------编程问答--------------------
ArrayList不能存储不同数据类型元素,如:有String a和Integer b,ArrayList不能同时存储a和b,而List<>就可以,这就是ArrayList过时的原因 --------------------编程问答-------------------- 上面说的不准确,是可以存储的,但在使用的时候很可能会报类型不匹配的错误,还会影响性能,所有说ArrayList不是类型安全的 --------------------编程问答--------------------
ArrayList不是List的一个实现吗?
ArrayList过时?你现在用什么?
--------------------编程问答-------------------- 过时了当然可以用,如果你不注重代码的效率和安全性的话我也无话可说 --------------------编程问答-------------------- Java中的数组还不能满足你的需求呀。。。 --------------------编程问答-------------------- ArrayList好多方法都是native修饰的,掉的是底层接口,效率上肯定比你这个要快。 --------------------编程问答--------------------
ArrayList<Object> 不能储存a和b? --------------------编程问答--------------------
你的发言很难回复,因为找不到几个对的地方。
“ArrayList不能同时存储a和b,而List<>就可以”
实现类做不到的事情,一个接口却做到了,这显然是不可能的。
<>范型在编译阶段就被消化了,运行时根本没有所谓的范型。所以<>对于提升运行时的效率和安全性没有任何帮助。
一句话就能错得如此没谱。 --------------------编程问答--------------------
我必须得顶你一下。。
补充:Java , Java EE