2016-11-26 46 views
0

一個ArrayList ID的名單我已經檢查用戶的列表,我需要這個列表轉換爲ID的列表,然後創建一個concatenated string但我堅持我的lambda表達式獲取在Android的

String [] arr = CheckedUsers.stream(users).filter(u-> u.getID()+"").toArray(); // this give error 

    String str= TextUtils.join(",", arr); 

任何人都可以幫助我嗎?

enter image description here

+0

Sora,你能告訴我們什麼是問題嗎?展望你的代碼,我認爲它是正確的。 – jonathanrz

+0

我已更新我的問題 – Sora

+0

除了紅色下劃線,如果您嘗試運行它,錯誤的堆棧跟蹤是什麼? – Acapulco

回答

0

您正在嘗試使用lambda表達式,但你的Java 7編譯

只在Java中添加了對lambda表達式的支持8.

你有兩個選擇:

+0

我已經做到了這一點,並修復了編譯問題,雖然我有'流(用戶)'兩個錯誤之一,說:表達期待,和一個'u.getID()+「」'說:字符串不能轉換爲布爾型 – Sora

+0

您正在使用過濾器,過濾器方法期望返回一個布爾值,因此只返回過濾器返回true的對象。你需要的是地圖方法而不是過濾器。 – jonathanrz

0

stream方法應該沒有列表本身上的參數來調用。在這種情況下,過濾器也不是您所需要的,因爲它只會過濾列表中的值。實現你需要什麼的

方式一:

  1. 變換的用戶ID添加到字符串。在這種情況下將需要map
  2. 在流中連接值。我們希望流中的所有值都有1個值。 reduce操作完成此操作。

Java代碼實現這一點:

String concatenatedIds = users.stream().map(u -> Integer.toString(u.getId())).reduce("", String::concat));

這裏是一個工作示例:http://ideone.com/hkYzjv。 希望這有助於。