当前位置: 首页 > 知识库问答 >
问题:

更新对象中的ArrayList索引

长孙承嗣
2023-03-14

我有一个ArrayList,里面有一堆MyObject对象。我想在我的对象中保留一个整数字段,它是ArrayList中这个对象的键,这样我就可以很容易地得到这个元素在ArrayList中的位置。

当我从这个ArrayList中删除一个对象时,会出现问题,因为索引会向左移动。避免这个问题的最佳方法是什么?

我应该不删除元素,而是用null覆盖它们(这样索引就不会移位),还是应该在删除一次之后遍历ArrayList以更新对象中的所有ID字段?

//编辑:我的目的:假设我获取了该ArrayList的一些对象并将它们插入另一个列表中。稍后在遍历第二个列表时,我想获取第一个ArrayList中对象的键。所以我必须将键保存在对象处。在这种情况下使用Map的好处在哪里?键只是自动增量整数。

共有2个答案

戚哲
2023-03-14

你最好使用Map。Map是一个将键映射到值的对象。它不能包含重复的键;每个键最多可以映射到一个值。

因此,在您的示例中,可以将id和对象作为键、值对存储在映射中。从那里可以直接访问相关id的对象。

林哲茂
2023-03-14

这可以使用Map-HashMap

示例

Map<Integer, MyObject> map = new HashMap<Integer, MyObject>();
MyObject obj = new MyObject();
Integer key = new Integer("1234");
obj.setKey(key);
map.put(obj.getKey(), obj);

要检索对象,请调用:

MyObject result = map.get(key);

result = null;

map.put(key, result);

每个键在地图上都是唯一的,因此,如果更改值,它不会影响键。

在这种情况下,可以存储具有null值的键。

否则,如果删除索引并再次放置,将解决:

        List<String> list = new ArrayList<String>();
        list.add("ONE");
        list.add("TWO");

        for (int index = 0; index < list.size(); index ++) {
            // remove the index that you will change to null
            list.remove(index);
            // put a null object in that index
            list.set(index, null);
            System.out.println(list.get(index));
        }

但我想那张地图正是你要找的。第二种方法不是线程安全的,在并发线程的情况下会导致崩溃

 类似资料:
  • 我有一个web应用程序,它使用JSF中的数据表和Primefaces特性,以便它可以执行一些更动态的功能。在dataTable中,我有包含可编辑数据的行。我的最终目标是让用户能够编辑数据,单击save按钮,update语句将被执行以替换数据库中存在的内容。问题是,此时我不知道如何检测ArrayList中对象的更改。 我已经杀一儆百,看看有没有人能解决我的困境。听我说,我有一个代码制作了一个data

  • 对于我当前的项目,我必须搜索ArrayList of ZipCode对象,以便找到距离用户输入的int zip最远的ZipCode。 下面是编写我遇到问题的方法的说明:public ZipCode findfurtwest(int-pZip)-查找距离提供的邮政编码最远的ZipCode。如果未找到邮政编码,则返回null。例如,距离邮政编码75234最远的是ADAK,AK 99546。 在我的代码

  • 我知道这个问题以前可能被问过很多次,但我有一个问题,我找不到一个特别针对我的问题的解决方案。 问题如下: 我有两个火箭和射弹的阵列清单,它们之间的碰撞被检查。当它们碰撞时,两者都被移除。问题是,当arraylist中唯一的火箭被击中时,异常发生了,我不知道如何阻止它发生。 碰撞方法+ArrayLists: 删除和添加方法: 注意:rocket.die()基本上只是删除火箭,与remove方法的方式

  • 我有一个名为Player的自定义对象的ArrayList。ArrayList显示在一个RecyclerView中--它工作得很好。我在RecolyerAdapter中为每个TextView添加了一个onClick,传递我的ArrayList、单击的列和单击的行--工作也很好。 我在第二个活动的onCreate方法中创建我的ArrayList spielerArrayList,从主活动获取名称(Ar

  • 问题内容: 我有一堂课。它具有以下特征; 它具有2个属性,和。1个人可以拥有许多电话,因此您可能会在下面看到具有多个ID的人。 还有另一门课叫。它将有一个称为的方法。 personList,具有3-4个Person对象。我需要搜索PersonArrayList并找到与Person对象匹配的对象。我怎样才能做到这一点? 注意:我尝试过。但这是行不通的。 问题答案: 我尝试了personList.co

  • 我的程序是物品清单,每个物品由用户输入,直到达到10,然后在最后显示每个物品的总成本(成本*数量)。 但是我需要能够更新特定项目的数量。所以我想以某种方式问用户“你想更新哪个项目?”和“你想减去多少”,但是我不知道如何将项目与其具体数量联系起来。之后,我想再次显示更新后的项目列表和更新后的总成本。 是否可以作为?或者我应该使用不同的结构? 这是一个班: 然后是方法: