Строковый атрибут «кодер» 1/0JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Строковый атрибут «кодер» 1/0

Сообщение Anonymous »

Сейчас я борюсь с проблемой.
По сути, у меня есть две строки. Я прочитал первое из файла Excel, а второе — из имени другого файла. Метод хеш-кода, который я перезаписал, возвращает разные значения для обеих строк, хотя их содержимое одинаково.
Итак, у меня проблема в том, что мой HashMap не работает должным образом, потому что я использую рассматриваемая строка в качестве ключа
Я обнаружил, что кодировка другая. Я также могу сказать это по «кодировщику».
Отладка IntelliJ
Отладка IntelliJ 2
Моя идея заключалась в том, чтобы вручную настроить затронутые атрибуты. для всех объектов. Но это не помогло.

Код: Выделить всё

 public void setName(String name) {
this.name = new String(name.getBytes(), Charset.forName("UTF-8"));
}
Я экспериментировал с Apache Tika, но, к сожалению, безуспешно

Код: Выделить всё

org.apache.tika
tika-core
0.7


org.apache.tika
tika-parsers
0.7

Методы в классе драйвера:

Код: Выделить всё

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Driver other = (Driver) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (surname == null) {
if (other.surname != null)
return false;
} else if (!surname.equals(other.surname))
return false;
return true;
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((name == null) ? 0 : name.hashCode());
result = prime * result
+ ((surname == null) ? 0 : surname.hashCode());
return result;
}

public int compareTo(Driver o) {
String d1Name = replaceUmlaute(o.getName());
String d2Name = replaceUmlaute(this.getName());
String d1Surname = replaceUmlaute(o.getSurname());
String d2Surname = replaceUmlaute(this.getSurname());

if (d1Name.compareToIgnoreCase(d2Name) == 0 && d1Surname.compareToIgnoreCase(d2Surname) == 0) {
return 0;
} else if(o.hashCode() == this.hashCode()){
return 0;
}
return -1;
}

private static String replaceUmlaute(String output) {
String newString = output.replace("\u00fc", "ue")
.replace("\u00f6", "oe")
.replace("\u00e4", "ae")
.replace("\u00df", "ss")
.replaceAll("\u00dc(?=[a-z\u00e4\u00f6\u00fc\u00df ])", "Ue")
.replaceAll("\u00d6(?=[a-z\u00e4\u00f6\u00fc\u00df ])", "Oe")
.replaceAll("\u00c4(?=[a-z\u00e4\u00f6\u00fc\u00df ])", "Ae")
.replace("\u00dc", "UE")
.replace("\u00d6", "OE")
.replace("\u00c4", "AE");
return newString;
}
Что я могу сделать?
Есть ли у кого-нибудь идеи?

Подробнее здесь: https://stackoverflow.com/questions/785 ... -coder-1-0
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как преобразовать строковый литерал .rdata в строковый литерал в стеке во время компиляции
    Anonymous » » в форуме C++
    0 Ответы
    118 Просмотры
    Последнее сообщение Anonymous
  • Файл в кодер/декодер Base64
    Гость » » в форуме JAVA
    0 Ответы
    65 Просмотры
    Последнее сообщение Гость
  • HDR-кодер Nvidia
    Гость » » в форуме C++
    0 Ответы
    84 Просмотры
    Последнее сообщение Гость
  • Кодер Python JSON вместо этого преобразует NaN в ноль
    Anonymous » » в форуме Python
    0 Ответы
    69 Просмотры
    Последнее сообщение Anonymous
  • Кодер AS5600 не читает на Raspberry Pi 4 [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    56 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»