2017-08-28 39 views
0

我有一個字符串列表List<String> treeList。我想比較最後四個元素與每個元素的預定義字符串。這樣做的最好方法是什麼?我認爲最好的方法來比較列表元素

一種方法是

String firstParent = treeList.get(treeList.size() - 1); 
String secondParent = treeList.get(treeList.size() - 2); 
String thirdParent = treeList.get(treeList.size() - 3); 
String fourthParent = treeList.get(treeList.size() - 4); 

if(firstParent.equals("a") && secondParent.equals("b") && thirdParent.equals("c") && fourthParent.equals("d")) { 
    return true; 
} 

有沒有錯字少可用的方法?列表比較可以是2,3或4個元素。

+0

4個最後的元素到不同的字符串,我會說任何壓縮代碼的嘗試都會讓它更難閱讀,所以更糟糕。我會說保持這種天真的方式。 – Joel

回答

6

你可以抓住一個子表,並將其與自己的價值觀的名單:

List<String> expected = Arrays.asList("a", "b", "c", "d"); 
List<String> actual = treeList.subList(treeList.size() - 4, treeList.size()); 
if (actual.equals(expected)) { 
    return true; 
} 
+1

如果'treeList.size() - 4'返回一個負值會怎麼樣? –

+2

@NikolasCharalambidis你爲什麼問我?詢問OP。 – shmosel

+2

treeList.size() - 4不能爲負數。這是通過調用函數來保證的。 –

0

如果你正在做從列表導出字符串字符串比較,首先應確保列表中包含了足夠的元素,或者你將獲得IndexOutOfBoundsException。比較字符串時,這是一件好事,以確保被選中的第一個值不爲空,那麼既然你要比較的每個我會改變對.equals()調用,以及...

if(treeList.size() >=4 && "a".equals(firstParent) && "b".equals(secondParent) && "c".equals(thirdParent) && "d".equals(fourthParent)){ // etc... }