Java: Как удалить элементы из списка при итерации к нему

Лучше добавлять изображения во фрагмент svg, используя тег svg <image>

В приложении SVG нет текста, требующего автоматического переноса, например HTML, поэтому в этом нет необходимости. использовать <foreignObject>

Изображения имеют разные размеры, поэтому мы берем изображение смартфона за основу, и изображение с текстом будет соответствовать по размеру первому изображению.

<image transform="translate(65 77) scale(0.9 0.99)"

.container {
width:25%;
height:25%;

}
<div class="container">
</style>
<svg id="designBox" width="100%" height="100%" viewBox="0 0 1242 2688">
         
          <image transform="translate(65 77) scale(0.9 0.99)" width="100%" height="100%" xlink:href="https://s3-us-west-2.amazonaws.com/s.cdpn.io/2707120/Screenshot.png"  />

         <image class="backgroundBox" width="100%" height="100%" xlink:href="https://s3-us-west-2.amazonaws.com/s.cdpn.io/2707120/XS_Max_Space_GrayNEW.png" />
  
</svg>
</div>

Приложение работает адаптивно во всех современных браузерах .

18
задан Community 23 May 2017 в 12:30
поделиться

7 ответов

Отделите остановку метода () от stopAndRemove (). Тогда запишите цикл с явным итератором, сделайте остановку и затем iterator.remove ().

"и" в имени метода запах кода.

17
ответ дан 30 November 2019 в 06:51
поделиться

Возможно, это - неправильный способ сделать это, но я всегда создаю набор удаления, который содержит индексы или ссылки на объекты, которые должны быть удалены. Я тогда выполняю итерации по тому набору и удаляю те индексы/объекты из исходного набора. Вероятно, не самое эффективное, но это сделало задание.

Вместо

for(Collection things : thing)  
    things.remove(thing)

я использую

Collection toRemove = new LinkedList();
for(things : thing)
    toRemove.add(thing);

for(toRemove : thing)
    things.remove(thing)
14
ответ дан 30 November 2019 в 06:51
поделиться

Когда я сделал это прежде, я всегда использовал "старый школьный" набор LinkedList, Итератор и Iterator.remove () метод для удаления текущего объекта.

4
ответ дан 30 November 2019 в 06:51
поделиться

Вы могли бы найти , эта статья о ConcurrentModificationException имеет некоторый совет в этой области.

3
ответ дан 30 November 2019 в 06:51
поделиться

Осуществите рефакторинг весь ServerObject, останавливающий код от stopAndRemove в частный stopServer метод, и затем сделайте удаление отдельно в stopAndRemove и closeCurrentlyOpen. Тогда можно использовать ListIterator, чтобы удалить их (или просто остановить их всех в для цикла и очистить список в конце).

2
ответ дан 30 November 2019 в 06:51
поделиться

Необходимо получить итератор и удалить использование его. Вы получаете исключение, потому что итераторы сбой быстро в Java.

1
ответ дан 30 November 2019 в 06:51
поделиться

Ответ на заголовок вопроса, не определенные детали данного примера. На самом деле это решение даже не является соответствующим в данной ситуации (рефакторинг является соответствующим, как предложили другие).

Однако кажется, что многие программисты Java не знают CopyOnWriteArrayList (часть JDK с тех пор 1.5) и пытаются прокрутить свои собственные решения той же проблемы (список копии прежде, чем выполнить итерации).

1
ответ дан 30 November 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: