1f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk/*
2f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk * Copyright (C) 2017 The Android Open Source Project
3f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk *
4f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk * except in compliance with the License. You may obtain a copy of the License at
6f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk *
7f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk *      http://www.apache.org/licenses/LICENSE-2.0
8f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk *
9f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk * Unless required by applicable law or agreed to in writing, software distributed under the
10f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
11f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk * KIND, either express or implied. See the License for the specific language governing
12f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk * permissions and limitations under the License.
13f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk */
14f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk
15f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monkpackage com.android.systemui.util;
16f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk
17f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monkimport java.util.List;
18f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monkimport java.util.function.Consumer;
19f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk
20f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monkpublic class Utils {
21f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk
22f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk    /**
23f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk     * Allows lambda iteration over a list. It is done in reverse order so it is safe
24f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk     * to add or remove items during the iteration.
25f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk     */
26f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk    public static <T> void safeForeach(List<T> list, Consumer<T> c) {
27f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk        for (int i = list.size() - 1; i >= 0; i--) {
28f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk            c.accept(list.get(i));
29f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk        }
30f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk    }
31f66d377a6828fcad07fa16f619a88ab97bb96983Jason Monk}
32