に置き換えることができます私は最近、アンドロイドの開発にラムダをサポートするためにretrolambdaライブラリを使用して開始しましたし、私は、Android Studioから次の警告受信:警告:コレクトコール
は、コレクトコールで置き換えることができます。
この検査では、ストリームapi呼び出しで置き換えることができるforeachループがレポートされます。次のように
私のコードは次のとおりです。
// mGeofenceList is a List<Geofence>
mGeofenceList = new ArrayList<>();
// GeofenceUtils.GeofenceObjects.entrySet() is a HashMap<String, LatLng>
for (Map.Entry<String, LatLng> entry : GeofenceUtils.GeofenceObjects.entrySet()) {
mGeofenceList.add(new Geofence.Builder()
.setRequestId(entry.getKey())
.setCircularRegion(
entry.getValue().latitude,
entry.getValue().longitude,
GeofenceUtils.GEOFENCE_RADIUS_IN_METERS)
.setExpirationDuration(GeofenceUtils.GEOFENCE_EXPIRATION_IN_MILLISECONDS)
.setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER |
Geofence.GEOFENCE_TRANSITION_EXIT)
.build());
}
は質問:どのように私はコレクトコールでそれを置き換えることができますか?
UPDATE:
// method stream() cannot be found
mGeofenceList.addAll(GeofenceUtils.GeofenceObjects.entrySet().stream()
.map(entry -> new Geofence.Builder()
.setRequestId(entry.getKey())
.setCircularRegion(
entry.getValue().latitude,
entry.getValue().longitude,
GeofenceUtils.GEOFENCE_RADIUS_IN_METERS)
.setExpirationDuration(GeofenceUtils.GEOFENCE_EXPIRATION_IN_MILLISECONDS)
.setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER |
Geofence.GEOFENCE_TRANSITION_EXIT)
// Collectors cannot be found
.build()).collect(java.util.stream.Collectors.toList()));
をそして今、それはメソッドストリーム()、コレクターを解決できないことを言う:私はAltキーを押し+入力すると、それは次のようにコードを変換します。 修正できますか?いくつかのインポートステートメントを追加できますか?または、現在はretrolambdaによってサポートされていませんか?
更新:解決済み、以下の回答を参照してください。
訪問このhttp://stackoverflow.com/questions/23127445/how-to-suppress-can-be-replaced-with-foreach-call -warning –
@harshad、私はその答えを見て、それは私の質問とは関係がありません。 –
Alt + Enterをクリックしてそれを置き換えてください –