Java 删除空数组值
我正在比较另外两个阵列来构建一个阵列。但是当我初始化第三个数组时,我必须设置长度。但这使得我的数组在某些情况下具有空对象。如果没有,我可以在数组中删除空/空位置。请参见下面我的代码:Java 删除空数组值,java,android,arrays,Java,Android,Arrays,我正在比较另外两个阵列来构建一个阵列。但是当我初始化第三个数组时,我必须设置长度。但这使得我的数组在某些情况下具有空对象。如果没有,我可以在数组中删除空/空位置。请参见下面我的代码: private String[] tags = new String[] { "Mike", "Bob", "Tom", "Greg" }; private boolean[] selected = new boolean[tags.length]; public String[] selec
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[]的复选框的代码
无论哪种方式,如果我只选择2个标记,那么我选择的_tags[]数组将是Mike、Bob、Null、Null
我需要把空值取出来。提前谢谢 您可以使用ArrayList,而不是array
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而不是array
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]);
}
}
您不应该使用标准Java数组,而应该使用:它将允许您向其中添加元素,并根据需要自动增加列表 基本上,首先声明/实例化ArrayList,而不指定任何类型的大小:
public ArrayList<String> selected_tags = new ArrayList<String>();
您不应该使用标准Java数组,而应该使用:它将允许您向其中添加元素,并根据需要自动增加列表 基本上,首先声明/实例化ArrayList,而不指定任何类型的大小:
public ArrayList<String> selected_tags = new ArrayList<String>();
不,不能在创建数组后删除空值并更改数组的长度。您必须创建一个新列表,或者使用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,如下所示:
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,您必须首先计算出长度,而不包括空值。正如你所见,这有点混乱:
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];
正如其他人提到的,使用ArrayList要容易得多。您甚至可以使用toArray函数从中获得一个正则数组 如果不使用ArrayList,您必须首先计算出长度,而不包括空值。正如你所见,这有点混乱:
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];
我建议你用ArrayList来代替。我建议你用ArrayList来代替。我相信我只是浪费了一个小时试图把它拼凑起来,而这很简单。谢谢@请点击回答您问题的答案旁边的复选标记。这样其他人就会马上知道问题已经得到了回答。投票选出所有有用的答案也很好。@Ted Hop我不得不根据有用的反馈测试我的代码。我总是投票并接受答案。我很抱歉,当时是凌晨3点,我只是觉得睡着了。我可以相信,在这么简单的时候,我只是浪费了一个小时来拼凑。谢谢@请点击回答您问题的答案旁边的复选标记。这样其他人就会马上知道问题已经得到了回答。投票选出所有有用的答案也很好。@Ted Hop我不得不根据有用的反馈测试我的代码。我总是投票并接受答案。很抱歉,当时是凌晨3点,我只是觉得睡着了。