gpt4 book ai didi

java - 解析 Json 文件时,如何使两个不同的 ArrayList 引用同一个对象

转载 作者:行者123 更新时间:2023-12-04 14:47:35 25 4
gpt4 key购买 nike

我正在尝试解析一个 json 数据文件,该文件在两个不同的 ArrayList 中有一个单一对象:

{
"TA": [
{
"firstname": "John",
"lastname": "Smith"
},
{
"firstname": "Jane",
"lastname": "Doe"
}
],
"Student": [
{
"firstname": "John",
"lastname": "Smith"
},
{
"firstname": "Kevin",
"lastname": "White"
}
]
}

我当前的解析方法只是为每个对象创建一个新的 Person 对象,并将它们添加到每个 List 对象中,但我希望我的 Person 对象 John Smith 只是一个被“TA”列表和“Student”列表引用的单一对象.我该怎么做呢?

最佳答案

如果你想降低内存使用率,你可以使用静态工厂方法来实习实例。假设您使用 Jackson:

class Person {
private static Map<Person, Person> cache = new HashMap<>();

@JsonCreator
public static Person create(
@JsonProperty("firstname") String firstname,
@JsonProperty("lastname") String lastname) {
Person person = new Person(firstname, lastname);
return cache.computeIfAbsent(person, Function.identity());
}

final String firstname;
final String lastname;

private Person(String firstname, String lastname) {
this.firstname = firstname;
this.lastname = lastname;
}

@Override
public boolean equals(Object o) {
return o instanceof Person
&& Objects.equals(((Person)o).firstname, this.firstname)
&& Objects.equals(((Person)o).lastname, this.lastname);
}

@Override
public int hashCode() {
return Objects.hash(this.firstname, this.lastname);
}
}

关于java - 解析 Json 文件时,如何使两个不同的 ArrayList 引用同一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69730524/

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