[英]Remove null values from java array
我正在嘗試從從csv字符串轉換而來的數組中刪除空值。
這就是我想要做的。
public class ArrayTest {
public static void main(String[] args) {
String commaSeparated = "item1,null,item1,null,item3";
String [] items = commaSeparated.split(",");
String[] result = removeNull(items);
System.out.println(Arrays.toString(result));
}
public static String[] removeNull(String[] items) {
ArrayList<String> aux = new ArrayList<String>();
for (String elem : items) {
if (elem != null) {
aux.add(elem);
}
}
return (String[]) aux.toArray(new String[aux.size()]);
}
}
我仍然得到如下的輸出,其中仍然具有空值。 你能告訴我這是怎么了嗎
[item1, null, item1, null, item3]
更改
if (elem != null)
至
if (!elem.equals("null"))
.split
函數返回一個字符串數組,因此您期望為null
那些元素實際上不是,它們是"null"
字符串。
實際上,您的removeNulls()
方法確實刪除了null Strings
,但請記住,當您執行String.split
,實際上是在創建一個非null的String
其值恰好是“ null”。
所以改變這個...
if (elem != null) {
為此,要考慮“空” ...
if (elem != null && !elem.equalsIgnoreCase("null")) {
removeNull(String[])
可以正常工作,它是測試失敗了。 考慮創建這樣的測試輸入:
public static void main(String[] args) {
String [] items = {"item1",null,"item1",null,"item3"};
String[] result = removeNull(items);
System.out.println(Arrays.toString(result));
}
順便說一句,這是考慮泛型的好地方。 如果您希望方法簽名看起來像這樣T[] removeNull(T[] input)
該T[] removeNull(T[] input)
? 這可能會為您提供一些有趣的選項和更通用的最終產品。
與流:
public static void main(String[] args) {
String commaSeparated = "item1,null,item1,null,item3";
String[] items = commaSeparated.split(",");
String[] result = Arrays.stream(items)
.filter(s -> s != null && !s.equals("null"))
.toArray(String[]::new);
System.out.println(Arrays.toString(result));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.