Я строю массив, основанный на сравнении двух других массивов. Но когда я инициализирую свой третий массив, я должен установить длину. Но в некоторых случаях мой массив имеет нулевые объекты. Оттуда я могу сбросить пустые/нулевые позиции в массиве. См. Мой код ниже:
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];
}
}
Я оставил код для Boolen selected []
которые строят Boolen selected []
.
В любом случае, если я выберу только 2 тега, тогда мой массив selected_tags [] будет Mike, Bob, Null, Null
Мне нужно получить Null Null. Заранее спасибо!
Вы можете использовать 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]);
}
}
Нет, вы не можете сбросить нулевые значения (и изменить длину массива) после того, как вы его создали. Вам нужно будет создать новый (или, например, использовать 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()]);
Как отмечали другие, это намного проще с 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];
Вместо использования стандартного массива Java вы должны использовать ArrayList
: он позволит вам добавлять к нему элементы, автоматически увеличивая список по мере необходимости.
В принципе, вы сначала объявляете/инициализируете ArrayList
, не указав какой-либо размер:
public ArrayList<String> selected_tags = new ArrayList<String>();
И затем в вашем цикле вы должны использовать метод add() для добавления элементов в этот ArrayList:
selected_tags.add(tags[i]);