import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class serTries {
public static void main(String[] args) {
List<Player> players=new ArrayList<>();
List<Player> secondaryPlayer =new ArrayList<>();
for(int i=0;i<3;i++) {
players.add(i, new Player("John " + i));
secondaryPlayer.add(players.get(i));
} //creating 3 Player objects and putting them in 2 different lists.
try {
Gson gson = new Gson();
String ser=gson.toJson(players);
String secondarySer=gson.toJson(secondaryPlayer);
Type ct = new TypeToken<ArrayList<Player>>(){}.getType();
System.out.println("First list:\n" + ser + "\nSecond list:\n" + secondarySer);
}catch( Exception e)
{
e.printStackTrace();
} } }
List<Player> deserializedPlayers = gson.fromJson(ser, ct);
List<Player> deserializedSecondaryPlayers = gson.fromJson(secondarySer, ct);
我的问题是,有什么方法可以让我序列化/反序列化一个名为onlinePlayers的列表,该列表引用了“John1”的实例,它也碰巧在List allPlayers中,而不重复“John1”,同时仍然引用那个对象?
我猜当我反序列化allPlayers时,它将创建不同于原始对象的对象,所以onlinePlayers在反序列化后不可能仍然引用相同的对象。我是否应该编写一个自定义方法,在反序列化后将新创建的“约翰1”实例添加到onlinePlayers中?
谢谢。
是否可以在不序列化对象的情况下序列化ArrayList?
简短的回答。没有。
序列化的要点是您可以从序列化中重新构造原始对象的副本。如果不包含列表元素的序列化,则无法重新构造列表。
您可以使用GSON自定义反序列化器做类似的事情。或者,您可以使用基于事件的JSON阅读器,并使用事件来提取所需的信息。
但我认为这是错误的做法。
这是问题的核心。
然而,我认为从玩家列表中提取数据(其中包含数千个对象)...
如果您有数千个对象,则序列化/反序列化是错误的解决方案:
>
要更新,您需要序列化/写入整个列表及其包含的所有对象。每一次。即使你只做了很小的改变。
没有简单/快速的方法来对序列化窗体进行查询。
在某个时候,您需要在内存中保存整个反序列化对象图。这是不缩放的。
你应该使用某种数据库。
如果一封邮件被发送到我的收件箱,我会收到一条消息,并将内容插入数据库。我有一个组织。springframework。整合。果心信息如下: 现在,如果出现故障,我希望有故障安全恢复机制,我想的是将消息对象序列化到一个文件中,然后反序列化并更新到DB。 问题1。在这种情况下,如何序列化消息对象?2。除了序列化,还可以使用其他机制吗? 编辑我以前没有做过序列化,我听说类应该实现Serializable,
我正在试验Stanford CoreNLP库,我想序列化主要的StanfordCoreNLP管道对象,尽管它抛出了一个java.io.NotSerializableException。 完整故事:每当我运行我的实现时,将管道注释器和分类器加载到内存中大约需要15秒。最终进程的内存约为600MB(很容易小到可以存储在我的机箱中)。我想在第一次创建管道后保存它,这样我就可以在以后将其读入内存。 然而,
我在网站上做了一个小研究,并在这个网站上回顾了相关主题,但答案是矛盾的:有人说这是不可能的,有人说这是可能的,但很危险。 目标是传递匿名类的对象作为RMI方法的参数。由于RMI要求,这个类必须是可序列化的。这里没有问题,很容易使类序列化。 但是我们知道内部类的实例包含对外部类的引用(匿名类是内部类)。因此,当我们序列化内部类的实例时,外部类的实例也被序列化为一个字段。问题来了:外部类是不可序列化的
本文向大家介绍什么是 Java 序列化?什么情况下需要序列化?相关面试题,主要包含被问及什么是 Java 序列化?什么情况下需要序列化?时的应答技巧和注意事项,需要的朋友参考一下 Java 序列化是为了保存各种对象在内存中的状态,并且可以把保存的对象状态再读出来。 以下情况需要使用 Java 序列化: 想把的内存中的对象状态保存到一个文件中或者数据库中时候; 想用套接字在网络上传送对象的时候; 想
序列化就是一种用来处理对象流的机制。将对象的内容流化,将流化后的对象传输于网络之间。 序列化是通过实现serializable接口,该接口没有需要实现的方法,implement Serializable只是为了标注该对象是可被序列化的,使用一个输出流(FileOutputStream)来构造一个ObjectOutputStream对象,接着使用ObjectOutputStream对象的writeO
问题内容: 当我尝试运行以下代码时: 我得到以下异常: 如何成功使用包含s的对象? 问题答案: 在序列化之前将集合变成列表,或使用自定义处理程序来这样做: