gpt4 book ai didi

java - 将接收到的数据集导出到数组

转载 作者:行者123 更新时间:2023-11-30 03:36:51 25 4
gpt4 key购买 nike

我需要将 Firebase 数据集中的数据导出到数组。这是我的代码:

Firebase fb = new Firebase("https://----.firebaseio.com/");
Query q = fb.orderByKey();

q.addValueEventListener(new ValueEventListener() {

@Override
public void onDataChange(DataSnapshot snapshot) {
iterator = snapshot.getChildren().iterator();
while (iterator.hasNext()) {
// The code I need goes here
}

}

@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});

此代码位于一个应该返回数据数组的方法内,但是将其导出到封闭方法中的局部变量并不能完成这项工作。有人有更好的方法吗?提前致谢。

最佳答案

回调将被异步调用,这意味着它可能不会在您的方法完成之前发生。

听起来您想要一个方法,在调用时将查询数据的最新状态。您可以做的是创建 Firebase 连接并将监听器附加到您的方法外部(可能在您的 main 方法内部),然后让您的方法查询监听器以获取最新数据。

class CustomValueListener implements ValueEventListener {    
private volatile DataSnapshop data; //accessed from multiple threads
@Override
public void onDataChange(DataSnapshot snapshot) {
data = snapshot;
}
@Override
public void onCancelled(FirebaseError firebaseError) {}
public DataSnapshot getLatestData() {
return data;
}
}
private CustomValueListener listener = new CustomValueListener();

public static void main(String...args) {
...
Firebase fb = new Firebase("https://----.firebaseio.com/");
Query q = fb.orderByKey();
q.addValueEventListener(listener);
...
}
String[] yourMethod() {
...
Sring[] result = ...
DataSnapshot snapshot = listener.getLatestData();
if (snapshot != null) {
iterator = snapshot.getChildren().iterator();
while (iterator.hasNext()) {
//now you can copy the data into the array
}
}
return result;
}

关于java - 将接收到的数据集导出到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27683279/

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