Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除空数组值_Java_Android_Arrays - Fatal编程技术网

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点,我只是觉得睡着了。