Я недавно начал использовать библиотеку retrolambda для поддержки лямбды в андроиде развития, и я получил следующее предупреждение от Android Studio:Предупреждения в Android Studio: Может быть заменено сборным вызовом
Может быть заменен сборным вызовом ,
Эта инспекция сообщает о петлях foreach, которые могут быть заменены вызовами потока api.
Мой код выглядит следующим образом:
// 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: когда я нажал Alt + Enter конвертации кода следующим образом:
// 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()));
А теперь он говорит, что он не может разрешить метод потока(), коллектор. Возможно ли это? Могу ли я добавить некоторые операторы импорта? Или в настоящее время он не поддерживается retrolambda?
ОБНОВЛЕНИЕ: РЕШЕНО, см. Ответ ниже.
посетить этот http://stackoverflow.com/questions/23127445/how-to-suppress-can-be-replaced-with-foreach-call -warning –
@harshad, я видел этот ответ, и это не имеет никакого отношения к моему вопросу. –
Нажмите Alt + Enter, а затем замените его –