Хорошо, вот моя проблема. Я должен HashSet
, я использую метод removeAll
, чтобы удалить значения, которые существуют в одном наборе из другого.
Перед вызовом метода я, очевидно, добавляю значения к Set
s. Я вызываю .toUpperCase()
для каждого String
перед добавлением, потому что значения имеют разные случаи в обоих списках. Там нет рифмы или причины для дела.
Как только я позвоню removeAll
, мне нужно вернуть исходные дела для значений, оставленных в Set
. Есть ли эффективный способ сделать это без запуска оригинального списка и использования CompareToIgnoreCase
?
Пример:
List1:
"BOB"
"Joe"
"john"
"MARK"
"dave"
"Bill"
List2:
"JOE"
"MARK"
"DAVE"
После этого создайте отдельные HashSet
для каждого Списка, используя toUpperCase()
в String
s. Затем позвоните removeAll
.
Set1.removeAll(set2);
Set1:
"BOB"
"JOHN"
"BILL"
Мне нужно, чтобы список снова выглядел так:
"BOB"
"john"
"Bill"
Любые идеи будут высоко оценены. Я знаю, что это плохо, должен быть стандарт для первоначального списка, но это не мне решать.