爲了達到此目的,我建議使用Map
數據結構,而不是存儲兩個平行向量。如果由於某種原因需要保留文件中元素的順序,則可以使用LinkedHashMap
。例如:
Map<String, String> regexesByName = new LinkedHashMap<>();
for (String line : linesFromFile) {
int index = line.indexOf(':');
if (index < 0) {
throw new IllegalArgumentException("Cannot parse: " + line);
}
String name = line.substring(0, index);
String regex = line.substring(index + 1);
regexesByName.put(name, regex);
}
然後枚舉所有名稱/正則表達式對,你可以這樣做:
for (Map.Entry<String, String> entry : regexesByName.entrySet()) {
// entry.getKey() is the name, entry.getValue() is the regex
}
以及查找正則表達式對於給定的名字,只是做:
String regex = regexesByName.get(name);
如果你想要的是後來將正則表達式轉換爲已編譯的Pattern
對象,那麼也很容易實現:
Map<String, Pattern> compiledRegexesByName = new LinkedHashMap<>();
for (Map.Entry<String, String> entry : regexesByName.entrySet()) {
compiledRegexesByName.put(
entry.getKey(), Pattern.compile(entry.getValue()));
}
爲什麼你想要一個'Vector'?這對於Map來說似乎更好。 –
似乎是一個好主意,但我想要一個矢量,因爲我會用特殊的正則表達式做另外一件事情,我將在後面將這個正則表達式轉換爲一個java正則表達式。謝謝 –
你可能不希望改變現有向量的值類型(因爲這樣你會失去類型安全性),而是用正確的類型創建一個新類型。如果你這樣做,那麼使用Map也可以。我在下面的答案中添加了一個示例。 –