Java 为什么我们在向firestore发送数据时将HashMap中的参数设置为object?

Java 为什么我们在向firestore发送数据时将HashMap中的参数设置为object?,java,android,firebase,google-cloud-firestore,hashmap,Java,Android,Firebase,Google Cloud Firestore,Hashmap,我正在观看一段视频,创建一个简单的应用程序(只是为了练习概念),用户在其中输入标题和想法。此数据将被发送到Firestore 但是,我对通过HashMap发送数据的部分感到困惑: Map data=newhashmap(); data.put(字符串\u TITLE,TITLE); 数据输入(字符串、想法、想法); 标题和思想基本上只是用户输入的标题和思想的字符串值 String thinks=edtThinks.getText().toString().trim(); 字符串title=ed

我正在观看一段视频,创建一个简单的应用程序(只是为了练习概念),用户在其中输入标题和想法。此数据将被发送到Firestore

但是,我对通过HashMap发送数据的部分感到困惑:

Map data=newhashmap();
data.put(字符串\u TITLE,TITLE);
数据输入(字符串、想法、想法);
标题和思想基本上只是用户输入的标题和思想的字符串值

String thinks=edtThinks.getText().toString().trim();
字符串title=edtTitle.getText().toString().trim();
之后,我所做的只是将其传递到journalRef:
journalRef.set(data)
中,其中journalRef只是我数据库的DocumentReference:

私有FirebaseFirestore db=FirebaseFirestore.getInstance(); DocumentReference journalRef=db.集合(“日记”).文档(“MyThoughts”); 我的问题是:为什么我们将数据作为
Map
而不是
Map
传递。标题和想法不只是用户输入的字符串值吗?

编辑:

另外,当我转到Firestore时,为什么它将想法和标题显示为字符串而不是对象(在HashMap中声明)


谢谢

您可以将上面的示例声明为
Map
,因为您在其中输入了简单的数据。但更高级的示例可能会让您将一个更深层的结构化对象放入Firestore,因此使用
Map
更合适。Firestore是一个“文档存储数据库”,其中文档是一个HashMap。该散列中的元素是名称/值对,其中名称是字符串,值可以是:字符串、布尔值、数字、时间戳、数组、(散列)映射、地理位置


因此,将
数据
声明为
HashMap
更为正确,因为其中包含的内容。

在Firestore文档中,字段名始终是精确的字符串,而值是对象。如果你想添加一个字符串、一个布尔值、一个数字或任何类型的对象都可以被视为对象,这其实并不重要。Java中的第一条规则是一切都是对象。因此,无论您向数据库添加什么,Firestore都会根据数据类型保存数据。回答你的问题:

为什么我们将数据作为Map而不是Map传递

您需要根据需要执行的操作传递数据。如果要使用该方法向数据库添加数据,则可以使用
Map
,这是因为该方法需要Object类型的参数。但是,如果要使用该方法执行更新操作,请注意,不能使用Map,因为该方法需要
Map
。此外,当您想要执行更新时,可以将不同类型的对象作为值传递,并相应地更新字段。所以你总是可以

标题和想法不只是用户输入的字符串值吗

是的。如果只想使用set()添加标题和想法,则可以使用Map,否则,对于更新操作,需要使用Map

并回答您编辑的问题:

另外,当我转到Firestore时,为什么它将想法和标题显示为字符串而不是对象(在HashMap中声明)


它将始终根据您添加的值显示值。在Firebase控制台中,除了地图的表示之外,没有其他对象的表示。除此之外,在场景后面,您添加的每个对象都有一个验证。因此,如果您传递字符串,该对象将始终保存为字符串,而不会以任何其他方式保存。

谢谢!请看我对我的问题所做的编辑。当我将鼠标悬停在数据上时,它会显示为一个字符串。你知道为什么会这样吗?谢谢。
getText()
已经返回了一个
字符串。您不需要对
字符串
调用
toString()
。您可以将其设置为任何您喜欢的为您编译的内容。
set(data)
的实际参数是
Object
。一旦它进入那个方法,你的泛化就消失了。哦,我明白了。非常感谢。非常感谢你!不客气,伙计。