Как конвертировать String в HashMap в Java

1

Я новичок в Java. Я хочу преобразовать строку в HashMap. но я не знаю, как его преобразовать. ниже мой код.

public class Excer5sam {     
    public static void main(String[] args) throws IOException{    
        BufferedReader fl=new BufferedReader(new FileReader("/home/mansoor/Documents/Fileip.txt"));

        Map<String, String>map=new HashMap<String, String>();   
        List<String>str=new ArrayList<>();   
        String ln=null;  
        while((ln=fl.readLine())!=null){  
            str.add(ln);   
            }   
        fl.close();  
        String s="";   
        for(String s1:str){   
            s+=s1+",";   
            }   
        System.out.println("value of s:"+s);   
        String v=s.replace(",", " ");  
        System.out.println("v value:"+"  "+v);  
        }  
}

мой ввод:

"u1","u10"  
"u2","u41"  
"u3","u10"  
"u4","u81"  
"u5","u10"  
"u6","u10"  
"u7","u31"  
"u8","u11"  

мой вывод строки ("v value"):

"u1" "u10" "u2" "u41" "u3" "u10" "u4" "u81" "u5" "u10" "u6" "u10" "u7" "u31" "u8" "u11"

Мне нужно преобразовать эту string(v Value) в HashMap<string,String > (например, ключ, пара значений). Как это сделать?
может ли кто-нибудь помочь найти решение, пожалуйста?

Теги:
string
hashmap

6 ответов

3

Во время чтения поместите значения в Map вместо сохранения в переменной String.

Попробуйте так:

while((ln=fl.readLine())!=null){  
    String[] pair = ln.split(" ");
    map.put(pair[0],pair[1]);
} 
  • 0
    большое спасибо. работает. если я печатаю карту, она выдает следующий вывод: Map: {«u8» = «u11», «u7» = «u31», «u1» = «u10», «u4» = «u81», «u3» = «U10», «u5» = «u10», «u6» = «u10», «u2» = «u41»}. Но если я проверил все ключи и значения с помощью map.containsValue («u10»), то вывел «FALSE» в качестве вывода. я больше не могу использовать эту карту. Вы можете помочь мне решить это, пожалуйста?
  • 0
    Вы уверены, что ваша карта хранит все эти значения в паре ключ-значение?
Показать ещё 2 комментария
2

Разделите свою строку на "," и добавьте ключ и значение на карту:

public static void main(String[] args) throws IOException{    
    BufferedReader fl=new BufferedReader(new FileReader("T:/temp/Fileip.txt"));

    Map<String, String>map=new HashMap<String, String>();   
    List<String>str=new ArrayList<String>();   
    String ln=null;  
    while((ln=fl.readLine())!=null){  
        String[] temp = ln.split(",");
        map.put(temp[0], temp[1]);
        }   
    fl.close();  
    }  
  • 1
    Если в String есть запятая, такая как «name: Name, MidName», тогда возникнет проблема.
1
     HashMap<String, String> myMap = new HashMap<String, String>();


         String s = "SALES:0,SALE_PRODUCTS:1,EXPENSES:2,EXPENSES_ITEMS:3";
         String[] pairs = s.split(",");
         for (int i=0;i<pairs.length;i++) {
             String pair = pairs[i];
             String[] keyValue = pair.split(":");
             myMap.put(keyValue[0], (keyValue[1]));
         }
  • 1
    Хотя этот фрагмент кода может решить вопрос, в том числе объяснение действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин, по которым вы предлагаете код.
0

Попробуй это

private static Map<String, String> splitToMap(String in) {
     String value = StringUtils.substringBetween(in, "{", "}"); //remove curly brackets
     String[] keyValuePairs = value.split(",");              //split the string to creat key-value pairs
     Map<String,String> map = new HashMap<>();               

     for(String pair : keyValuePairs)                        //iterate over the pais
     {
         String[] entry = pair.split(":");                   //split the pairs to get key and value 
         map.put(entry[0].trim().replaceAll( "[\"]", ""), entry[1].trim().replaceAll( "[\"]", ""));          //add them to the hashmap
     }
        return map;
    }
0

Попробуйте эту строку, это будет полезно для вас

 Map<String,String> lists=new HashMap<String,String>();
  int i=1;
 for(String s1:str){   
       lists.put(String.valueof(i),s1);
     i++;
        }  

Вы можете легко получить доступ из индекса.

0

Добавьте map.put(s, v); in for loop, где вы печатаете s, v;

for(String s1:str){   
            s+=s1+",";   
            }   
        System.out.println("value of s:"+s);   
        String v=s.replace(",", " ");  
        System.out.println("v value:"+"  "+v);
        map.put(s,v); 
        }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню