首页 > 解决方案 > 从 java 7 中的 ArrayList 中删除备用元素

问题描述

我有一个包含以下元素的字符串数组

5.0,99,5.5,100,6.0,101

现在我想做的是删除字符串格式的所有十进制值,例如5.0,5.56.0

所以我的最终数组应该包含元素99,100,101

所以到目前为止我所做的是显示在下面的代码中

public static String[] deleteElement(String[] str_array) {
        //String[] str_array = {"item1","item2","item3"};
        List<String> list = new ArrayList<String>(Arrays.asList(str_array));
        
        list.remove("5.0");
        list.remove("5.5");
        list.remove("6.0");
        return str_array = list.toArray(new String[0]);
    }

我对这些值进行了硬编码,这是非常糟糕的做法,因为将来的值可能会超过当前值,所以我想要一种通过使用index.

我也尝试使用remove(index)0,2,4 之类的索引定位来删除,但实际发生的是,在删除 后5.0,元素向左移动,因此 100 进入第二个位置,并在下一次迭代中删除 100。

那么有什么方法可以构造一个通用函数,所以如果十进制值中有更多元素,那么它也可以被删除。

注意:字符串十进制值将始终驻留在偶数索引位置。

标签: javaarrayslistarraylist

解决方案


您可以使用以下方法,它对我来说很好!

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class DecimalRemoval {
    public static void main(String[] args) {
        
        List<String> lst = Arrays.asList("5.0","99","5.5","100","6.0","101");
        List<String> resultant = new ArrayList<>(lst.size());
        
        for(String element: lst) {
            if(! element.contains("."))
                resultant.add(element);
        }
        
        System.out.println(resultant);
    }
}

在此处输入图像描述

还附上我工作区的屏幕截图。


推荐阅读