gpt4 book ai didi

ArrayList 中可能匹配项的 Java 迭代

转载 作者:行者123 更新时间:2023-11-29 05:30:02 25 4
gpt4 key购买 nike

我的问题是关于迭代和性能的。让我们考虑以下情况:

public class Car {

private String name;
private int type;
private int horsePower;

String getKey() {
return type + "_" + horsePower;
}

private final int NUM_OF_CARS = 50000;

public void test() {
List<Car> cars = new ArrayList<Car>(NUM_OF_CARS);

for (int i = 0; i < NUM_OF_CARS; i++) {
Car c = new Car();

if (i == 0 || i == 176 || i == 895 || i == 1500 || i == 4600) {
c.name = "Audi A4 " + i;
c.type = 1;
c.horsePower = 200;
} else {
c.name = "Default";
c.type = 2 + i;
c.horsePower = 201;
}

cars.add(c);
}

// Matches should contain all Audi's since they have same type and horse
// power

long time = SystemClock.currentThreadTimeMillis();

HashMap<String, List<Car>> map = new HashMap<String, List<Car>>();

for (Car c : cars) {
if (map.get(c.getKey()) != null) {
map.get(c.getKey()).add(c);
} else {
List<Car> list = new ArrayList<Car>();
list.add(c);
map.put(c.getKey(), list);
}
}

Iterator<Entry<String, List<Car>>> iterator = map.entrySet().iterator();

while (iterator.hasNext()) {
if (iterator.next().getValue().size() == 1) {
iterator.remove();
}
}

Log.d("test", String.valueOf((SystemClock.currentThreadTimeMillis() - time)));
}
}

这是在这里找到所有 Audi 的最有效方法吗?

这花了我 1700 毫秒

谢谢。

最佳答案

这取决于您进行迭代的原因。如果您确实需要访问每个底层 Car,那么您真的别无选择。但是,如果您要查找与字符串的特定匹配项,则可以考虑使用 Map。

关于ArrayList 中可能匹配项的 Java 迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21434881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com