/ / जावा: कई परिणाम (टाइमस्टैम्प के आधार पर) में विभाजित परिणाम - जावा, सरणियाँ, विभाजन, टाइमस्टैम्प, परिणाम

जावा: स्प्लिट परिणाम एकाधिक सरणी में सेट करें (टाइमस्टैम्प पर आधारित) - जावा, सरणी, विभाजन, टाइमस्टैम्प, परिणामसेट

मेरे पास एक SQL क्वेरी से एक परिणाम है। प्रत्येक परिणाम में एक यूनिक्स-टाइमस्टैम्प और एक डबल मूल्य होता है:

double timeStamp = resultSet.getDouble(1);
double value     = resultSet.getDouble(2);

मैं (या तो पहले या बाद में) बनाना चाहूंगाResultSet के माध्यम से पुनरावृत्ति) कई सरणियों, उनमें से प्रत्येक दो समय के बीच की सीमा का प्रतिनिधित्व करते हैं। परिणाम के प्रत्येक डबल / डबल जोड़ी को उन सरणियों में से एक में रखा जाना चाहिए।

उदाहरण के लिए, अगर सबसे कम टाइमस्टैम्प होगा1366816115 और उच्चतम 1366848754, मैं एक घंटे (60 मिनट) के टाइमर के साथ सरणियों का निर्माण करना चाहूंगा और प्रत्येक डबल / डबल जोड़ी को उन सरणियों में से एक में डाल दूंगा, परिणाम स्वरूप रिलेटेड मैचों का टाइमस्टैम्प।

जावा में ऐसा करने के लिए एक प्रभावी तरीका क्या है? मैंने कई तरीकों की कोशिश की, लेकिन हर बार मैं इसके बारे में कल्पना करना शुरू कर देता हूं और अंततः भ्रमित हो जाता हूं।

अगर कोई निश्चित कीवर्ड है जिसे मुझे देखना चाहिए, तो मुझे इस पर भी खुशी होगी।

पढ़ने और किसी भी मदद के लिए अग्रिम धन्यवाद।

संपादित करें: pasha701 उत्तर पूर्णता के लिए बहुत अच्छा काम करता है, यहाँ बताया गया है कि मैं पीरियडस्टार्ट की गणना कैसे करता हूँ:

Double key = new Double(timeStamp - (timeStamp % granularityInSeconds));

जहां टाइमस्टैम्प = यूनिक्स टाइमस्टैम्प (1000 तक जावा टाइमस्टैम्प को विभाजित करें) और ग्रैन्युलैरिटीइन्कॉन्ड्स = किस रेंज में एक सरणी कवर होना चाहिए, यानी ग्रैन्युलैरिटीइन्कॉन्ड्स = (60 * 60) एक घंटे के लिए एरे को बनाएगा।

बहुत बहुत धन्यवाद, pasha701!

उत्तर:

उत्तर № 1 के लिए 1
public void execute ()  {
Map<Double, List<Pair>> arrayMap = new HashMap<Double, List<Pair>>();
while (resultSet.next()) {
double timeStamp = resultSet.getDouble(1);
double value = resultSet.getDouble(2);

Double key = getPeriondStart(timeStamp);
List<Pair> list = arrayMap.get(key);
if (list == null) {
list = new ArrayList<Pair>();
arrayMap.put(key, list);
}
list.add(new Pair(timeStamp, value));
}

// arrayMap contains arrays separated by periods
}

// shrink parameter to Unix-Timestamp period (hour) begining
Double getPeriondStart(double timeStamp) {
return ...;
}

class Pair {
double timeStamp;
double value;

public Pair(double timeStamp, double value) {
this.timeStamp = timeStamp;
this.value = value;
}
}