我需要你一些示例代码的帮助来解决我无法解脱的情况。 我有一个简单的对象列表。我的阶级是这样的:如何从Java ArrayList中删除重复的对象?
class MyClass {
String str;
Integer intgr;
}
而且列表包含相同的元素:
[{a1 5}, {b2 3}, {g1 1}, {b5 1}, {c9 11}, {g2 3}, {d1 4}, {b3 19}... ... ...]
我需要检查,如果任何元素包含字符串相同的前缀(这里后缀是最后一个字符),然后保留整数中具有较大值的元素。以上示例列表的预期输出将为:
[{a1 5}, {c9 11}, {g2 3}, {d1 4}, {b3 19}... ... ...]
字符串将具有唯一值,但可以在前缀中匹配。在java中我不太好。那么有人能帮我解决这个问题吗?这是我想要的代码,但得到IndexOutOfBoundsException
。此代码有问题,所以需要您的帮助。
谢谢!
int size = list.size();
for (int j = 0; j < size; j++) {
if (list.get(j).str.substring(0, list.get(j).str.length()-1).compareTo(list.get(j+1).str.substring(0, list.get(j+1).str.length()-1)) == 0) {
if (list.get(j).intgr > list.get(j+1).intgr)
list.remove(list.get(j+1));
size--;
else {
list.remove(list.get(j));
j--;
size--;
}
}
}
一个建议我给你:不是链接这样的方法,尽量只做一个时间和他们读入临时变量。看到你的程序的逻辑错误会容易得多。 – Charles