2
這是我的第一個問題,它是關於Java的。 我想實現以下邏輯:Java。如何從兩個字符串數組或列表中刪除相同的字符串對象
我有兩個字符串數組(或字符串的字符串列表)。有一個字符串排列(asu) - M1,M2,M3 ...以及一串字符串 (rzs) - M1,M2,M3及其所有可能的組合。每個元素(asu)(例如M1)需要找到包含(例如M1)的(rzs)(M1, M1M2,...)中的元素。例如:從(asu)中取出M1, 將開始在(rzs)中搜索重複(包含)。我們在 (rzs)找到M1M2,它包含M1。之後,我們應該從 數組(列表)中刪除這兩個元素。而我,我的英語技能對不起^^
String[] asu = { "M1", "M1", "M1", "M3", "M4", "M5", "M1", "M1", "M1", "M4", "M5", "M5" };
String[] rzs = { "M1", "M2", "M3", "M4", "M5", "M1M2", "M1M3", "M1M4", "M1M5", "M2M3", "M2M4", "M2M5", "M3M4", "M3M5", "M4M5", "M1M2M3", "M1M2M4",
"M1M2M5", "M1M3M4", "M1M3M4", "M1M4M5", "M2M4", "M2M5" };
public static void main(final String[] args) {
work bebebe = new work();
bebebe.mywork();
}
public void mywork() {
System.out.println(Arrays.deepToString(rzs));
System.out.println(Arrays.deepToString(asu));
for (int i = 0; i < asu.length; i++) {
System.out.println("Итерация: " + i);
for (int j = 0; j < rzs.length; j++) {
if (asu[i].matches(rzs[j].toString())) {
System.out.println(i + " элемент (" + asu[i] + ") в ASU равен " + j + " элементу (" + rzs[j] + ") в RZS");
asu[i] = "";
rzs[j] = "";
}
}
}
}
結果不會刪除的子串項目。不滿足邏輯。 我會感謝您的建議。
你的代碼很美觀,但你的解決方案也不滿足邏輯。正如我之前所說,如果我們發現M1M2(rzs),我們應該將他與M1比較。如果M1是M1M2的子串,我們應該刪除兩者。 你的代碼不會這樣做。 「包含」語句只比較像M1 = M1這樣的對象,但不包含對象的字符串; –
@EldarNezametdinov包含不等於。你可以將字符串框到你自己的類,並覆蓋等於做indexOf。你想要一個例子嗎? –
如果對你來說不難,因爲我幾天前纔開始學習Java ......我不知道這種情況怎麼做纔對。 –