我想从android中的2d数组中删除空列?

时间:2012-11-12 11:00:42

标签: android

我在可扩展列表视图中的数据绑定方面存在问题。我在这里使用

ArrayList<ExpandListGroup> list = new ArrayList<ExpandListGroup>();

ExpandListGroup用于数据绑定。但在总和2d数组中有null值。数据是动态的。

例如:

String [] [] array1 = [[one,two,three,null],[seven,six,null]] ;

我想从这个二维数组中删除空列

2 个答案:

答案 0 :(得分:0)

您需要采用中间的arraylist和结果数组,并按照以下步骤进行操作。

  1. 首先将源数组(包含null)复制到arraylist中。
  2. 然后从arraylist中删除null
  3. 然后创建新数组并将数据从arraylist复制到数组。

    private void remove_nulls()      {

         String [] [] array1 = {{"one","two","three",null},{"seven","six",null}} ;
         ArrayList<ArrayList<String>> contact = new ArrayList<ArrayList<String>>();
    
         for(int i=0;i<array1.length;i++)
         {
             ArrayList<String> con = new ArrayList<String>();
             for(int j=0;j<array1[i].length;j++)
             {
    
                 if(array1[i][j]!=null)
                 con.add(array1[i][j]);
             }
             if(con.size()>0)
                 contact.add(con);
         }
         String [] [] array2 = new String[array1.length][];
         for(int i=0;i<contact.size();i++)
         {
             array2[i]=new String[contact.get(i).size()];
             for(int j=0;j<contact.get(i).size();j++)
             {
                 array2[i][j]=contact.get(i).get(j);
             }
         }
    
     }
    

答案 1 :(得分:0)

除非这个问题有一些技巧......

String[][] array1 = {{"one", "two", "three", null}, {"seven", "six", null}};

List<String[]> newList = new ArrayList<>();

for (int i = 0; i < array1.length; ++i) {
    List<String> currentLine = new ArrayList<>();
    for (int j = 0; j < array1[i].length; ++j) {
        if (array1[i][j] != null) {
            currentLine.add(array1[i][j]);
        }
    }
    //create the array in place
    newList.add(currentLine.toArray(new String[currentLine.size()]));
}
//no need to use an intermediate array
String[][] array2 = newList.toArray(new String [newList.size()][]);

//And a test for array2
for (int i = 0; i < array2.length; ++i) {
    for (int j = 0; j < array2[i].length; ++j) {
        System.out.print(array2[i][j] + " ");
    }
    System.out.println();
}

System.out.println("Compared to...");
//Compared to the original array1
for (int i = 0; i < array1.length; ++i) {
    for (int j = 0; j < array1[i].length; ++j) {
        System.out.print(array1[i][j] + " ");
    }
    System.out.println();
}