PHPでは、次の方法で配列に要素を動的に追加できます。
$x = new Array();
$x[] = 1;
$x[] = 2;
この後、次の$x
ような配列になります{1,2}
。
Javaで同様のことを行う方法はありますか?
PHPでは、次の方法で配列に要素を動的に追加できます。
$x = new Array();
$x[] = 1;
$x[] = 2;
この後、次の$x
ような配列になります{1,2}
。
Javaで同様のことを行う方法はありますか?
回答:
java.util.LinkedListまたはjava.util.ArrayListを見てください
List<Integer> x = new ArrayList<Integer>();
x.add(1);
x.add(2);
int[]
)は、toArray()
Listのメソッドを使用するだけです。上記のコードを使用しますが、を使用x.toArray()
してプリミティブ配列を取得します。
ARRAY
オブジェクトのようなもの、またはそのような愚かなものとインターフェイスしているのでない限り、プリミティブ配列を避ける方がはるかに良いでしょう。
List
参照を使用するArrayList
と、いつでも縁石にキックできます。誰かがのようなより良いリストをリリースした場合SuperDuperAwesomeList
、参照をにした場合、やるべきことがたくさんあるかもしれませんArrayList
。ArrayListには、Listにはないものがあります。コード内でこれらのものに依存している場合、スワップアウトするのははるかに困難になります。
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とまったく同じであるため、次に使用するキーと、奇妙な反復順序(および整数キーといくつかの文字列の間の奇妙な同値関係)がわかります。ただし、単純なインデックス付きコレクションの場合は、他の回答者が提案したように、Javaのリストを使用することをお勧めします。
List
すべてのintを整数でラップするオーバーヘッドのために使用を避けたい場合は、プリミティブ型のコレクションの再実装を使用することを検討してください。これは、内部で配列を使用しますが、内部配列がいっぱいの場合にのみ、すべての変更でコピーを実行しません( ArrayListのように)。(グーグルですぐに見られる例の1つは、このIntListクラスです。)
グアバは含まれていなラッパーの作成方法ではInts.asList
、Longs.asList
など
ArrayList
-追加するたびにサイズを変更する代わりに、部屋がなくなるとサイズが2倍になるため、頻繁にサイズを変更する必要がありません。
org
はより1つ短いためですresult
。
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)
私はこの質問をウェブで頻繁に見ましたが、私の意見では、評判の高い多くの人々がこれらの質問に適切に答えていませんでした。それで、ここで私自身の答えを表現したいと思います。
まず、との間に違いがあることを考慮する必要がarray
ありarraylist
ます。
質問は、ArrayListではなく、配列に要素を追加することを求めています
答えは非常に簡単です。それは3つのステップで行うことができます。
そして最後にここにコードがあります:
ステップ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
から、toArray()
メソッドを使用できます。ただし、実行している内容によっては、配列がまったく必要ない場合もあります。Lists
あなたが望むものがもっとあるかどうかを調べてください。
おそらく、これにはArrayListを使用する必要があります-構造のような動的サイズの配列の場合。
JAVAのコレクションフレームワークを使用して、配列に要素を動的に追加できます。コレクションフレームワークは、プリミティブデータ型では機能しません。
このコレクションフレームワークは、「java.util。*」パッケージで利用可能になります
たとえば、ArrayListを使用する場合、
オブジェクトを作成してから、いくつかの要素(String、Integer ...などの任意のタイプ)を追加します。
ArrayList a = new ArrayList();
a.add("suman");
a.add(new Integer(3));
a.add("gurram");
これで、配列に3つの要素が追加されました。
追加された要素のいずれかを削除したい場合
a.remove("suman");
要素を追加したい場合も
a.add("Gurram");
したがって、配列サイズは動的に増加/減少しています。
ArrayListを使用するか、配列にジャグリングして、配列サイズを自動インクリメントします。
プリミティブ配列のどこにいるかを数えます
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で配列に追加する簡単な方法です。2つ目の配列を使用して元の配列を格納し、さらに1つの要素を追加しました。その後、その配列を元の配列に戻しました。
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()));
}
}
}