2011-07-24 10 views
1

私は他の2つの配列と比較して配列を構築しています。しかし、私が3番目の配列を初期化するとき、長さを設定する必要があります。しかし、それは私の配列にはいくつかのインスタンスでnullオブジェクトがあるようにしています。離れて私は配列に空の/ nullの位置をドロップすることができますか?私はBoolen selected []構築するチェックボックスのコードを残しNull配列の値を削除します

private String[] tags  = new String[] { "Mike", "Bob", "Tom", "Greg" }; 
    private boolean[] selected = new boolean[tags.length]; 
    public String[] selected_tags = new String[tags.length]; 

     for (int i = 0; i < tags.length; i++) { 
      if (selected[i] == true){ 
       selected_tags[i] = tags[i]; 
      } 
     } 

:これまでに以下の私のコードを参照してください。

いずれかの方法で、私は唯一の2個のタグを選択した場合、その後の私のselected_tags []配列は、私がヌルヌルを取得する必要がありMike, Bob, Null, Null

になります。前もって感謝します!

+0

代わりにArrayListを使用することをお勧めします。 –

答えて

9

arrayではなくArrayListを使用できます。

private String[] tags  = new String[] { "Mike", "Bob", "Tom", "Greg" }; 
private boolean[] selected = new boolean[tags.length]; 
public List<String> selected_tags = new ArrayList<String>(); 

for (int i = 0; i < tags.length; i++) { 
    if (selected[i] == true){ 
     selected_tags.add(tags[i]); 
    } 
} 
+0

これは簡単だったときに、私はそれを一緒にハックしようと1時間を無駄にしたと信じることができます。ありがとう! – Denoteone

+3

@Denoteoneあなたの質問に答える答えの横にあるチェックマークをクリックしてください。そうすれば、他の人は質問が答えられたことをすぐに知ることができます。 (有用な回答をすべて投票するのもいいです。) –

+0

@Ted Hop役に立つフィードバックに基づいてコードをテストしなければなりませんでした。私はいつも投票して答えを受け入れる。私は謝罪するが、それは午前3時であり、私は単に眠りを感じる。 – Denoteone

2

代わりの標準のJava配列を使用して、あなたはArrayListを使用する必要があります。それは、必要に応じて自動的にリストを成長させ、あなたがそれに要素を追加することができます。

public ArrayList<String> selected_tags = new ArrayList<String>(); 

をそして、それから、あなたのループでは、あなたは項目を追加するadd()メソッドを使用したい:


基本的に、あなたは最初のサイズの任意の種類を指定せずに、ArrayListをインスタンス化/宣言したいですそのArrayListに:

selected_tags.add(tags[i]); 
4

いいえ、作成した後、null値を削除して(配列の長さを変更することはできません)、できません。あなたは(下図のようにArrayListのを使用するか、または例えば)新しいものを作成する必要があります:他人として

List<String> list = new ArrayList<String>(); 

for (int i = 0; i < tags.length; i++) 
    if (selected[i] == true) 
     list.add(tags[i]); 

// Convert it to an array if needed: 
selected_tags = list.toArray(new String[list.size()]); 
2

言及している、これはArrayListとはるかに簡単です。 toArray機能を使用すると、そこから通常の配列を取得することもできます。

ArrayListを使用しない場合は、最初に長さを計算し、nullの値は含めないでください。ご覧のとおり、少し面倒です。

int length = 0; 
for(boolean b : selected) if(b) ++length; // Count the "true"s 

String[] selected_tags = new String[length]; 
for(int i = 0, j = 0; i < tags.length; i++) 
    if(selected[i]) 
     selected_tags[j++] = tags[i]; 
関連する問題