11 ответов:
посмотрите на java.утиль.LinkedList или java.утиль.ArrayList
List<Integer> x = new ArrayList<Integer>(); x.add(1); x.add(2);
массивы в Java имеют фиксированный размер, поэтому вы не можете "добавить что-то в конце", как вы могли бы сделать в PHP.
немного похоже на поведение PHP это:
int[] addElement(int[] org, int added) { int[] result = Arrays.copyOf(org, org.length +1); result[org.length] = added; return result; }тогда вы можете написать:
x = new int[0]; x = addElement(x, 1); x = addElement(x, 2); System.out.println(Arrays.toString(x));но эта схема ужасно неэффективные для больших массивов, так как он делает копию всего массива каждый раз. (И это на самом деле не полностью эквивалентно PHP, так как ваши старые массивы остаются прежними).
массивы PHP являются на самом деле это то же самое, что и Java HashMap с добавленным "max key", поэтому он будет знать, какой ключ использовать дальше, и странный порядок итерации (и странное отношение эквивалентности между целочисленными ключами и некоторыми строками). Но для простых индексированных коллекций, лучше использовать список в Java, как и другие предложенными ответами.
если вы хотите избежать использования
Listиз-за накладных расходов на обертывание каждого int в целое число рассмотрите возможность использования переопределений коллекций для примитивных типов, которые используйте массивы внутри, но не делайте копию при каждом изменении, только когда внутренний массив заполнен (как и ArrayList). (Один быстро погуглил пример это класс IntList.)гуава содержит методы создания таких фантиков in
Ints.asList,Longs.asListи т. д.
Apache Commons имеет ArrayUtils реализация для добавления элемента в конце нового массива:
/** Copies the given array and adds the given element at the end of the new array. */ public static <T> T[] add(T[] array, T element)
можно использовать
ArrayListи затем использоватьtoArray()метод. Но в зависимости от того, что вы делаете, вам может даже не понадобиться массив вообще. Посмотрите, еслиListsбольше того, что вы хотите.посмотреть: Java List Tutorial
Я очень часто видел этот вопрос в интернете, и, на мой взгляд, многие люди с высокой репутацией не отвечали на эти вопросы должным образом. Поэтому я хотел бы выразить здесь свой собственный ответ.
Сначала мы должны рассмотреть есть разница между
arrayиarraylist.вопрос требует добавления элемента в массиве и не ArrayList
ответ прост. Это может быть сделать в 3 шага.
- преобразовать массив в arraylist
- добавить элемент в arrayList
- преобразовать обратно новый arrayList в массив
и, наконец, вот код:
Шаг 1:
public List<String> convertArrayToList(String[] array){ List<String> stringList = new ArrayList<String>(Arrays.asList(array)); return stringList; }Шаг 2:
public List<String> addToList(String element,List<String> list){ list.add(element); return list; }шаг 3:
public String[] convertListToArray(List<String> list){ String[] ins = (String[])list.toArray(new String[list.size()]); return ins; }Шаг 4
public String[] addNewItemToArray(String element,String [] array){ List<String> list = convertArrayToList(array); list= addToList(element,list); return convertListToArray(list); }
вы, вероятно, хотите использовать ArrayList для этого-для динамически размера массива как структуры.
вы можете динамически добавлять элементы в массив с помощью Collection Framework в JAVA. платформа сбора данных не работает с примитивными типами данных.
этот фреймворк коллекции будет доступен в " java.утиль.*" пакет
например, если вы используете ArrayList,
создать объект к нему, а затем добавить количество элементов (любой тип, как строка, целое число ...и т. д.)
ArrayList a = new ArrayList(); a.add("suman"); a.add(new Integer(3)); a.add("gurram");Теперь вы добавили 3 элемента в массив.
Если вы хотите чтобы удалить любой из добавленных элементов
a.remove("suman");снова если вы хотите добавить какой-либо элемент
a.add("Gurram");таким образом, размер массива увеличивается / уменьшается динамически..
держите счет, где вы находитесь в примитивном массиве
class recordStuff extends Thread { double[] aListOfDoubles; int i = 0; void run() { double newData; newData = getNewData(); // gets data from somewhere aListofDoubles[i] = newData; // adds it to the primitive array of doubles i++ // increments the counter for the next pass System.out.println("mode: " + doStuff()); } void doStuff() { // Calculate the mode of the double[] array for (int i = 0; i < aListOfDoubles.length; i++) { int count = 0; for (int j = 0; j < aListOfDoubles.length; j++) { if (a[j] == a[i]) count++; } if (count > maxCount) { maxCount = count; maxValue = aListOfDoubles[i]; } } return maxValue; } }
Это простой способ добавить в массив на java. Я использовал второй массив для хранения моего исходного массива, а затем добавил к нему еще один элемент. После этого я передал этот массив обратно в исходный.
int [] test = {12,22,33}; int [] test2= new int[test.length+1]; int m=5;int mz=0; for ( int test3: test) { test2[mz]=test3; mz++; } test2[mz++]=m; test=test2; for ( int test3: test) { System.out.println(test3); }
в Java размер массива фиксирован, но вы можете динамически добавлять элементы в массив фиксированного размера, используя его индекс и цикл for. Пожалуйста, найдите пример ниже.
package simplejava; import java.util.Arrays; /** * * @author sashant */ public class SimpleJava { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here try{ String[] transactions; transactions = new String[10]; for(int i = 0; i < transactions.length; i++){ transactions[i] = "transaction - "+Integer.toString(i); } System.out.println(Arrays.toString(transactions)); }catch(Exception exc){ System.out.println(exc.getMessage()); System.out.println(Arrays.toString(exc.getStackTrace())); } } }

Comments