java - 从 json 转换为 vector 后,元素未从 vector 中删除

标签 java android json vector gson

我有一个这样的数据模型:

    public class Person {
        String name = "";
        Integer id;
        public Person() {
            name = "";
            id = new Integer(0);
        }
    }

首先,我创建了 2 个对象并添加到一个 vector 中。将 vector 转换为 json 字符串。再次检查后,我已将 json 字符串转换为 vector 。在 vector 内部,它显示了正确数量的元素和数据。但是当我试图获取一个对象的位置时,它返回-1。即使使用 vector.remove() 我也无法删除该对象。如果我不将 vector 转换为 json 字符串,它就可以正常工作。以下是我的代码:

        Gson gson = new Gson();
        Vector vecResult = new Vector();

        Person person = new Person();
        person.name = "ABC";
        person.id = new Integer(1001);

        vecResult.add(person);

        Person person2 = new Person();
        person2.name = "DEF";
        person2.id = new Integer(1002);

        vecResult.add(person2);

        String json = gson.toJson(vecResult); //successful

        Type token = new TypeToken<Vector<Person>>() {}.getType();
        Vector<Person> vecResults = gson.fromJson(json3, token); //vecResults got 2 objects
        int pos = vecResults.indexOf(person); //returning -1
        boolean isRemoved = vecResults.remove(person); // returning false

最佳答案

您需要覆盖以下内容

boolean equals(Object obj) 
int     hashCode()

您的代码不起作用,因为 Vector#remove 使用以下内容来获取索引。

public synchronized int indexOf(Object o, int index) {
    if (o == null) {
        for (int i = index ; i < elementCount ; i++)
        if (elementData[i]==null)
            return i;
    } else {
        for (int i = index ; i < elementCount ; i++)
        if (o.equals(elementData[i]))
            return i;
    }
    return -1;
    }

请注意 equals 的默认实现如下

public boolean equals(Object obj) {
    return (this == obj);
    }

关于java - 从 json 转换为 vector 后,元素未从 vector 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15904150/

相关文章:

java - string.split(\\s+) 无法处理前导空格

java - Delaunay 三角剖分中没有边的矩形约束

java - Eclipse 说我的 Android 项目包含错误,但没有任何错误

java - 避免 WorkManager 立即运行?

json - 使用 Spark 和 scala 从 Spark 数据帧中的 JSON 类型列中获取所有值,而不考虑键

python - 解码 JSON 给我一个 Python 中的某个变量?

android - JSON 数组内嵌套 JSON 对象

java - 增加锁数量的最佳方法是什么?

java - 用鼠标绘图

java - 变量在内部类中访问。需要宣布最终。但我不想宣布最终