[英]Comparing Strings using .equals() in java
我有接受用戶輸入的這段代碼,使用.split()
將其分解為一個數組,然后將唯一不是" "
的值添加到列表中,通常在比較時我會說整數我會寫==
或!=
但是我怎么寫不等於使用.equals()
? 我會寫(!array.equals(" ");
嗎?
Scanner in = new Scanner(System.in);
String input = in.next();
String[] array = input.split("");
List<String> list = new ArrayList<String>();
for (int a = 0; a < array.length; a++) {
if (array[a].equals(" ")) {
list.add(array[a]);
}
}
array[a].equals(" ")
返回true
或false
,如果要反轉條件,則需要使用!
(不)
例如
if (!array[a].equals(" ")) {
讀取為“如果數組中位於位置a的元素不等於“”
是的,您將使用!
不是用於反轉任何布爾表達式的運算符,但在這里您也應該使用trim()
。
if (!array[a].trim().equals("")) {
這可以確保如果輸入具有一個或多個空格,則不會將其添加到List
。 另一種方法是像這樣使用isEmpty()
if (!array[a].trim().isEmpty()) { // Java 6 and above
由於array.equals產生布爾值,所以! 修飾符將反轉結果。
將字符串與文字值進行比較時,請始終使用文字值來調用.equals()
因為文字值是null安全的:
" ".equals(array[a]);
如果您使用的是Java8,則可以使用流來很好地,簡潔地完成您想要的事情:
List<String> notSpaces = Pattern.compile("").splitAsStream(input)
.filter(s->!" ".equals(s))
.collect(Collectors.toList());
您也可能真的很偷偷摸摸,兩次分裂,第一次是在空格字符上分裂:
Pattern splitAll = Pattern.compile("");
List<String> notSpaces = Pattern.compile(" +").splitAsStream(input)
.flatMap(s->splitAll.splitAsStream(s))
.collect(Collectors.toList());
第一個拆分將從結果字符串中刪除所有空格,第二個拆分將每個剩余的字符串拆分為其組成字符串。 不知道哪個實際上更有效。 如果有很多空間,第二個可能會更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.