मुझे HTML डेटा को पार्स करने में समस्या है। जावा का String.indexof() बेहद धीमा है। क्या कोई इसे तेज करने के लिए कोई समाधान सुझा सकता है?
while (counter2 <= found)
{
number = Integer.toString(counter2);
start = page.indexOf("<result" + number + ">") + 8 + number.length();
end = page.indexOf("</result" + number + ">");
if (start > 0 && end > 0)
{
buffer = page.substring(start, end);
}
page = page.substring(end, page.length());
start = buffer.indexOf("<word>") + 6;
end = buffer.indexOf("</word>");
if (start > 0 && end > 0)
{
Word = buffer.substring(start, end);
}
start = buffer.indexOf("<vocabulary>") + 12;
end = buffer.indexOf("</vocabulary>");
if (start > 0 && end > 0)
{
Dictionary = buffer.substring(start, end);
}
start = buffer.indexOf("<id>") + 4;
end = buffer.indexOf("</id>");
if (start > 0 && end > 0)
{
ID = buffer.substring(start, end);
}
sqlDriver.createDictionaryWord("Wordlist", ID, Word, Dictionary);
// counter = counter + 1;
counter2 = counter2 + 1;
}
मुझे इसे किसी भी तरह कम से कम 5 गुना तेजी से काम करने की ज़रूरत है। किसी भी मदद के लिए धन्यवाद।
2 जवाब
Pattern matcher
रेगेक्स का उपयोग लंबे स्ट्रिंग्स के लिए indexOf()
से काफी तेज है (छोटे स्ट्रिंग्स के लिए, indexOf()
रेगेक्स से बेहतर है)। अपने स्ट्रिंग पैटर्न की अनुक्रमणिका खोजने के लिए अपने टेक्स्ट और रेगेक्स का प्रयोग करें।
Pattern pattern = Pattern.compile(regex);
public static void getIndices(String text, Pattern pattern) {
Matcher matcher = pattern.matcher(text);
matcher.find();
System.out.print("Start index: " + matcher.start());
System.out.print("End index: " + matcher.end());
}
ध्यान दें कि आपको अपने रेगेक्स को प्रत्येक रेगेक्स के लिए केवल एक बार Pattern
ऑब्जेक्ट में संकलित करना होगा और इसलिए इसे लूप के अंदर न रखें।
मैंने एक्सएमएल बनाया और XmlPullParser का उपयोग करने के लिए सलाह का इस्तेमाल किया। थोड़ा तेज, लेकिन फिर भी कुछ उपकरणों पर मिनटों में, फ़ाइल का आकार 1.7mb। काफी भ्रमित करने वाला।
संबंधित सवाल
नए सवाल
android
एंड्रॉइड Google का मोबाइल ऑपरेटिंग सिस्टम है, जिसका उपयोग प्रोग्रामिंग या डिजिटल डिवाइस (स्मार्टफोन, टैबलेट, ऑटोमोबाइल्स, टीवी, वियर, ग्लास, IoT) को विकसित करने के लिए किया जाता है। एंड्रॉइड से संबंधित विषयों के लिए, एंड्रॉइड-विशिष्ट टैग जैसे कि एंड्रॉइड-इरादे, एंड्रॉइड-गतिविधि, एंड्रॉइड-एडॉप्टर आदि का उपयोग करें। विकास या प्रोग्रामिंग के अलावा अन्य प्रश्नों के लिए, लेकिन एंड्रॉइड फ्रेमवर्क से संबंधित हैं, इस लिंक का उपयोग करें: https: // android.stackexchange.com।