2017-08-28 35 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... }