想要向现有数组添加或追加元素
int[] series = {4,2};
现在我想用我发送的新值动态更新系列..
就像我发送 3 个更新系列一样int[] series = {4,2,3};
如果我再次发送 4 个更新系列int[] series = {4,2,3,4};
int[] series = {4,2,3,4,1};
如果我再次发送1 个更新系列
怎么做????
我在其他函数中每 5 分钟生成一个整数,并希望发送以更新int[] series
数组..
java中数组的长度是不可变的。这意味着一旦创建了数组,就无法更改数组的大小。如果你用 2 个元素初始化它,它的长度是 2。但是你可以使用不同的集合。
List<Integer> myList = new ArrayList<Integer>();
myList.add(5);
myList.add(7);
并使用包装方法
public void addMember(Integer x) {
myList.add(x);
};
试试这个
public static void main(String[] args) {
int[] series = {4,2};
series = addElement(series, 3);
series = addElement(series, 1);
}
static int[] addElement(int[] a, int e) {
a = Arrays.copyOf(a, a.length + 1);
a[a.length - 1] = e;
return a;
}
如果您每 5 分钟生成一个整数,最好使用集合。如果您的代码需要,您始终可以从中获取数组。
否则定义足够大的数组以在运行时处理所有值(虽然不是首选。)
如果要添加索引,则需要创建一个新数组。
试试这个:
public static void main(String[] args) {
int[] series = new int[0];
int x = 5;
series = addInt(series, x);
//print out the array with commas as delimiters
System.out.print("New series: ");
for (int i = 0; i < series.length; i++){
if (i == series.length - 1){
System.out.println(series[i]);
}
else{
System.out.print(series[i] + ", ");
}
}
}
// 这里,创建一个方法
public static int[] addInt(int [] series, int newInt){
//create a new array with extra index
int[] newSeries = new int[series.length + 1];
//copy the integers from series to newSeries
for (int i = 0; i < series.length; i++){
newSeries[i] = series[i];
}
//add the new integer to the last index
newSeries[newSeries.length - 1] = newInt;
return newSeries;
}
像其他人建议你最好使用收集。但是,如果您出于某种原因必须坚持使用数组,那么 Apache Commons ArrayUtils可能会有所帮助:
int[] series = {4,2};
series = ArrayUtils.add(series, 3); // series is now {4,2,3}
series = ArrayUtils.add(series, 4); // series is now {4,2,3,4};
请注意,该add
方法创建一个新数组,复制给定数组并在末尾附加新元素,这可能会影响性能。
你也可以试试这个。
public static int[] addOneIntToArray(int[] initialArray , int newValue) {
int[] newArray = new int[initialArray.length + 1];
for (int index = 0; index < initialArray.length; index++) {
newArray[index] = initialArray[index];
}
newArray[newArray.length - 1] = newValue;
return newArray;
}
数组的大小无法更改。如果你想要一个更大的数组,你必须创建一个新数组。
但是,更好的解决方案是使用可以根据需要增长的 (Array)List。如果您需要在应用程序中使用数组,则方法 ArrayList.toArray(T[] a) 返回一个数组。
public int[] return_Array() {
int[] a =new int[10];
int b = 25;
for(int i=0; i<10; i++) {
a[i] = b * i;
}
return a;
}
import java.util.Arrays;
public class NumberArray {
public static void main(String []args){
int[] series = {4,2};
int[] newSeries = putNumberInSeries(1,series);
System.out.println(series==newSeries);//return false. you won't get the same int[] object. But functionality achieved.
}
private static int[] putNumberInSeries(int i, int[] series) {
int[] localSeries = Arrays.copyOf(series, series.length+1);
localSeries[series.length] = i;
System.out.println(localSeries);
return localSeries;
}
}
...
只能在 JDK 1.5 或更高版本中使用。如果您使用的是 JDK 4 或更低版本,请使用以下代码:'
public static int[] addElement(int[] original, int newelement) {
int[] nEw = new int[original.length + 1];
System.arraycopy(original, 0, nEw, 0, original.length);
nEw[original.length] = newelement;
}
否则(JDK 5 或更高版本):
public static int[] addElement(int[] original, int... elements) { // This can add multiple elements at once; addElement(int[], int) will still work though.
int[] nEw = new int[original.length + elements.length];
System.arraycopy(original, 0, nEw, 0, original.length);
System.arraycopy(elements, 0, nEw, original.length, elements.length);
return nEw;
}
当然,正如上面许多人提到的,您可以使用 aCollection
或 an ArrayList
,这允许您使用该.add()
方法。
class AddElement {
public static void main(String s[]) {
int arr[] ={2,3};
int add[] = new int[arr.length+1];
for(int i=0;i<add.length;i++){
if(i==add.length-1){
add[i]=4;
}else{
add[i]=arr[i];
}
System.out.println(add[i]);
}
}
}
这对我有用:
int[] list = new int[maximum];
for (int i = 0; i < maximum; i++{
list[i] = put_input_here;
}
这样,它简单而高效。
类似于 Evgeniy:
int[] series = {4,2};
add_element(3);
add_element(4);
add_element(1);
public void add_element(int element){
series = Arrays.copyOf(series, series.length +1);
series[series.length - 1] = element;
}
int[] oldArray = {1,2,3,4,5};
//new value
int newValue = 10;
//define the new array
int[] newArray = new int[oldArray.length + 1];
//copy values into new array
for(int i=0;i < oldArray.length;i++)
newArray[i] = oldArray[i];
//another solution is to use
//System.arraycopy(oldArray, 0, newArray, 0, oldArray.length);
//add new value to the new array
newArray[newArray.length-1] = newValue;
//copy the address to the old reference
//the old array values will be deleted by the Garbage Collector
oldArray = newArray;