Использование лучшего паттерна
$Pattern = '^Backup-ID|^Policy|^Primary Copy|^Expires|^Copy Number|^Fragment Size|^Expires|^MediaID'
и RegEx для разделения выходного сигнала на Backup-ID
(Get-Content .\test.txt|Select-String -Pattern $Pattern|Out-String) -split "(?=Backup-ID)"|ForEach-Object {
(( Использование лучшего паттерна
[110] и RegEx для разделения выходного сигнала на Backup-ID
[111] <час> hostname01,VM_weekly,23,1/5/2024 3:19:13 AM,2,6188832,1/5/2024 3:19:13 AM,XXX122,3,6188832,1/5/2024 3:19:13 AM,XXX134
hostname02,VM_weekly2,24,1/5/2024 3:19:13 AM,2,6188832,1/5/2024 3:19:13 AM,XXX244,3,6188832,1/5/2024 3:19:13 AM,XXX199,4,6188832,1/5/2024 3:19:13 AM,XXX177
-split "`r?`n" | %{( Использование лучшего паттерна
[110] и RegEx для разделения выходного сигнала на Backup-ID
[111] <час> hostname01,VM_weekly,23,1/5/2024 3:19:13 AM,2,6188832,1/5/2024 3:19:13 AM,XXX122,3,6188832,1/5/2024 3:19:13 AM,XXX134
hostname02,VM_weekly2,24,1/5/2024 3:19:13 AM,2,6188832,1/5/2024 3:19:13 AM,XXX244,3,6188832,1/5/2024 3:19:13 AM,XXX199,4,6188832,1/5/2024 3:19:13 AM,XXX177
-split ":\s+",2)[1]}) -join ',').Trim(',')
}
<час> hostname01,VM_weekly,23,1/5/2024 3:19:13 AM,2,6188832,1/5/2024 3:19:13 AM,XXX122,3,6188832,1/5/2024 3:19:13 AM,XXX134
hostname02,VM_weekly2,24,1/5/2024 3:19:13 AM,2,6188832,1/5/2024 3:19:13 AM,XXX244,3,6188832,1/5/2024 3:19:13 AM,XXX199,4,6188832,1/5/2024 3:19:13 AM,XXX177
Поскольку может быть несколько ссылок на один список, может быть предпочтительнее и / или более практично очистить его, чем переназначить все ссылки.
Если вы много очищаете свой массив ( в пределах, скажем, большого цикла) нет смысла создавать много временных объектов. Конечно, сборщик мусора в конечном итоге очистит их, но нет смысла тратить ресурсы, если вам это не нужно.
И потому что очистка списка - это меньше работы, чем создание нового.
Возможно, у вас есть последнее поле (переменная класса) Список
:
private final List<Thing> things = ...
Где-то в классе вы хотите очистить (удалить все) вещи. Поскольку вещи
являются окончательными, они не могут быть переназначены. Более того, вы, вероятно, не хотите переназначать новый экземпляр List, так как у вас уже есть отличный экземпляр List.
Представьте себе ситуацию, когда в вашем коде есть несколько ссылок на один и тот же java.util.ArrayList
, Было бы почти невозможно или очень сложно создать новый экземпляр списка и назначить его всем переменным. Но java.util.ArrayList.clear ()
добивается цели!
clear () не перераспределяет новый объект, поэтому это меньше влияет на производительность.
Вы платите меньше с чистым, чем с созданием нового объекта, если ваша цель была действительно очистить.
Переназначение ссылки не очищает объект. Предполагается, что если нет других ссылок на него, он будет исправлен GC относительно скоро. В противном случае, вы только что запутались.
In addition to the reasons mentioned, clearing a list is often more semantically correct than creating a new one. If your desired outcome is a cleared list, the action you should take is to clear the list, not create a new list.