У меня была немного другая проблема. Вместо того, чтобы увеличивать локальную переменную в forEach, мне нужно было назначить объект локальной переменной.
Я решил это, определив частный класс внутреннего домена, который обертывает и список, который я хочу перебирать (countryList ) и вывод, который я надеюсь получить из этого списка (foundCountry). Затем, используя Java 8 «forEach», я перебираю по полю списка, и когда найден объект, который я хочу, я назначаю этот объект в поле вывода. Таким образом, это присваивает значение полю локальной переменной, не меняя локальную переменную. Я считаю, что, поскольку локальная переменная сама по себе не изменяется, компилятор не жалуется. Затем я могу использовать значение, которое я захватил в поле вывода, вне списка.
Объект домена:
public class Country {
private int id;
private String countryName;
public Country(int id, String countryName){
this.id = id;
this.countryName = countryName;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCountryName() {
return countryName;
}
public void setCountryName(String countryName) {
this.countryName = countryName;
}
}
Объект обертки:
private class CountryFound{
private final List<Country> countryList;
private Country foundCountry;
public CountryFound(List<Country> countryList, Country foundCountry){
this.countryList = countryList;
this.foundCountry = foundCountry;
}
public List<Country> getCountryList() {
return countryList;
}
public void setCountryList(List<Country> countryList) {
this.countryList = countryList;
}
public Country getFoundCountry() {
return foundCountry;
}
public void setFoundCountry(Country foundCountry) {
this.foundCountry = foundCountry;
}
}
Операция итерации:
int id = 5;
CountryFound countryFound = new CountryFound(countryList, null);
countryFound.getCountryList().forEach(c -> {
if(c.getId() == id){
countryFound.setFoundCountry(c);
}
});
System.out.println("Country found: " + countryFound.getFoundCountry().getCountryName());
Вы можете удалить метод класса-оболочки «setCountryList ()» и сделать поле «countryList» окончательным, но я не получил ошибки компиляции, оставляя эти данные как есть.
SVG-файл с несколькими одинаковыми идентификаторами недопустим для http://www.w3.org/TR/SVG/struct.html#IDAttribute
. идентификаторы уникальны или перемещают SVG в отдельные файлы и ссылаются на них с помощью тегов <object>
или <iframe>
.
Я создал инструмент для рандомизации идентификаторов определений, чтобы избежать этой проблемы с помощью встроенного svg, ссылающегося на тот же #id, надеюсь, он будет полезен для кого-то еще. http://hugozap.com/randomize_svg_def_ids.html