2014-06-13 53 views
-1

我有一個常規列表如下如何找到一個格式字符串的在elemets一個Groovy列表

def permissions = [ 
    TESTENTITY.ADMINISTER, 
    TESTENTITY.CREATE, 
    TESTENTITY.DELETE, 
    TESTENTITY.READ, 
    TESTENTITY.UPDATE, 
    TESTBEAN.ADMINISTER, 
    TESTBEAN.CREATE, 
    TESTBEAN.DELETE, 
    TESTBEAN.READ, 
    TESTBEAN.UPDATE 
] 

想找到所有格式「TESTENTITY」列表用更少的代碼的元素。它可行嗎?

+3

比什麼代碼少?那些字符串?你有什麼嘗試? –

+0

我不確定爲什麼這個問題被多次拒絕。除了問題中特有的「少代碼」部分外,這似乎是一個完全合理的問題。 –

+0

作爲一個新手Groovy開發人員,我無法找到關於爲常規列表編寫閉包的很多信息,我不明白爲什麼我的問題被拒絕爲 – RanPaul

回答

1

這是我解釋問題的方式。
不考慮每個元素作爲String,而是集合Enum

enum TestEntity { 
    ADMINISTER, CREATE, DELETE, READ, UPDATE 
} 

enum TestBean { 
    ADMINISTER, CREATE, DELETE, READ, UPDATE, DONOTHING 
} 

def permissions = [ 
    TestEntity.ADMINISTER, TestEntity.CREATE, 
    TestEntity.DELETE, TestEntity.READ, TestEntity.UPDATE, 

    TestBean.ADMINISTER, TestBean.CREATE, 
    TestBean.DELETE, TestBean.READ, TestBean.UPDATE, TestBean.DONOTHING 
] 

permissions.findAll { it in TestEntity } 

注:
DONOTHING添加到TestBean只是以示區別。

+1

標題說他們是字符串。如果它們是枚舉,那可能就解釋了爲什麼這個問題被拒絕了。標題具有誤導性。 –

1

你可以做這樣的事情......

def matchingResults = permissions.findAll { perm -> 
    // perm will be one element from permissions. 
    // inspect it and return true if it should be 
    // include in the results. 
} 

如果這些都在權限列表中的字符串,這可能是這個樣子......

def matchingResults = permissions.findAll { perm -> 
    perm.startsWith 'TESTENTITY' 
} 

是,你是什麼尋找?

相關問題