Почему он не равен строке и строке из списка <String> - PullRequest
0 голосов
/ 19 сентября 2018

У меня возникла проблема с типом String:

Строка из list-String отличается от оригинальной строки

Вот мои примеры кодов

    Map<String, List<String>> parameters_test=new  HashMap<String, List<String>>();

    parameters_test.put("0",new LinkedList<String>());parameters_test.get("0").add("WM188126M");
    parameters_test.put("1",new LinkedList<String>());parameters_test.get("1").add("BXJ006");
    parameters_test.put("2",new LinkedList<String>());parameters_test.get("2").add("‭1829690014");
    parameters_test.put("3",new LinkedList<String>());parameters_test.get("3").add("16");

и затем поместите карту в другой метод

  if (getParamsMap() != null) {
        for (String item : getParamsMap().keySet()) {
            List<String> valueList = getParamsMap().get(item);
            if (valueList == null || valueList.isEmpty()) {
                continue;
            }
            if (item.equals("0")) {
                woCode = valueList.get(0);
            } else if (item.equals("1")) {
                product = valueList.get(0);
            } else if (item.equals("2")) {
                purchaseOrder =  valueList.get(0);
            } else if (item.equals("3")) {
                labelNumbers = valueList.get(0);
            }
        }
    }

    if(woCode.equals("WM188126M")){
        System.out.println("01 true");
    }else{
        System.out.println("01 fail");
    }
    if(product.equals("BXJ006")){
        System.out.println("02 true");
    }else{
        System.out.println("02 fail");
    }
    if(purchaseOrder.equals("1829690014")){
        System.out.println("03 true");
    }else{
        System.out.println("03 fail");
    }
    if(labelNumbers.equals("16")){
        System.out.println("04 true");
    }else{
        System.out.println("04 fail");
    }

Почему я всегда получаю такой результат: 01 true 02 true 03 fail 04 fail

Все нормальнов течение долгого времени.недавно появились ошибки.

но я ничего не менял.

Код используется в Java 1.6 64bit - Eclipse

Текстовый файл Кодировка: UTF-8

Меня давно судят.С наилучшими пожеланиями для тех, кто дает руку.

Ответы [ 3 ]

0 голосов
/ 19 сентября 2018

Ваша строка "1829690014" в списке равна [, 1, 8, 2, 9, 6, 9, 0, 0, 1, 4], а не [1, 8, 2, 9, 6, 9,0, 0, 1, 4], поэтому, когда вы сравниваете эти два, выдает ошибку.

0 голосов
/ 19 сентября 2018
  • Текстовый файл содержит некоторые специальные символы, и для кодировки неправильно задано значение UTF-8.
  • введите следующую строку ниже.

parameters_test.put ("2", новый LinkedList ());
parameters_test.get ("2"). add ("1829690014");

0 голосов
/ 19 сентября 2018

В "1829690014" есть специальный символ.Просто введите строки ввода (особенно 1) в parameters_test, и все должно работать нормально.

...