在java中删除二维数组中的一些元素

问题描述:

我正在构建一个采用二维数组并返回二维数组的java函数。这个函数过滤输入函数中的一些元素。在这种情况下它的一个字符串数组并筛选出具有其第二元件为0。例如,该元素: 如果我有阵列在java中删除二维数组中的一些元素

{{"one", "0.0"}, {"two", "2.4"}, {"three", "0.0"}, {"four", "2.3"}} 

然后我将得到

{{"two","2.4"},{"four","2.3"}} 

我有这一点,但它不工作

public String[][] getArrayNoZero(String[][]s){ 
    String [] result; 
    for(int i=0; i<s.length; i++){ 
    if(float(s[i][1])>0){ 
     String []tempArray= {s[i][0],s[i][1]}; 
     result.append(tempArray); 
    } 
    } 
    return result; 
} 

感谢

您试图键入强制转换的方式无效。使用Float.parseFloat方法将字符串转换为浮点数或使用等于方法来比较字符串。

public String[][] getArrayNoZero(String[][]s) 
    { 
    java.util.List<String[]> result=new java.util.ArrayList<String[]>(); 
    for(int i=0; i<s.length; i++) 
    { 
    if(!s[i][1].equals("0.0")) 
     { 
     String []tempArray= {s[i][0],s[i][1]}; 
     result.add(tempArray); 
     } 
    } 
    return result.toArray(new String[0][0]); 
} 

最简单的方法为t o创建一个你想要的返回类型的新ArrayList(在这里,new ArrayList<String[]>),附加所需的元素,然后在末尾使用toArray - return myList.toArray(new String[][0]);

首先,一个字符串[]为一个常量两项是一种可怕的方式来存储您的数据。你最好用对象

public class Pair 
{ 
    public String firstElement; 
    public String secondElement; 
} 

然后你可以只有一个Pair对象的数组。

您目前的实施根本无法工作。数组不能动态改变它们的大小(你试图将一个数组附加到另​​一个数组)。 append()方法返回一个NEW数组,它必须被分配到某处(你可以看到为什么这么低效)。所以,你需要:

result = result.append(tempArray); 

且不说结果必须是一个二维数组,首先,你没有在原来的代码中指定。

String[][] result; 

现在你将不得不初始化结果的东西,以避免一个NullPointerException当您尝试使用的append()。

换句话说,二维数组是一种可怕的方式来存储这些数据,因为您无论如何只有2列。使用结构和Pair对象的单个数组更容易,并且会为您节省很多头痛。