Хорошо, вот моя проблема. Мне нужно 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"
Любые идеи будут высоко оценены. Я знаю, что он плох, должен быть стандарт для исходного списка, но это не для меня.