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