MultiValueMap в Java
Я изучаю Hashmap с несколькими параметрами(1 ключ, 2 значения) и я смог найти Apache multiValueMap для своей проблемы.
вот мои коды для multiValueMap.
import java.util.Set;
import org.apache.commons.collections.map.MultiValueMap;
import org.apache.commons.collections.MultiMap;
public class multiValueMap {
public static void main(String args[]) {
String a, b, c;
MultiMap mMap = new MultiValueMap();
mMap.put("a", "Hello there, It's a wonderful day");
mMap.put("a", "nice to meet you");
Set<String> keys = mMap.keySet();
for (String key : keys) {
System.out.println("Key = " + key);
System.out.println("Values = " + mMap.get(key));
a = String.valueOf(mMap.get(key));
System.out.println("A : " + a);
}
}
}
// The result as below
Key = a
Value = [Hello there, It's a wonderful day, nice to meet you]
A : [Hello there, It's a wonderful day, nice to meet you]
вот мой вопрос как я могу сохранить первое значение для строки b, а второе для c? если я подстроку значения MultiMap зависит от",", то он будет хранить Привет только там. пожалуйста, дайте мне полезные советы.
3 ответов
вы можете попробовать следующее :
String a, b, c;
MultiMap mMap = new MultiValueMap();
mMap.put("a", "Hello there, It's a wonderful day");
mMap.put("a", "nice to meet you");
Set<String> keys = mMap.keySet();
for (String key : keys) {
System.out.println("Key = " + key);
System.out.println("Values = " + mMap.get(key));
List<String> list = (List<String>) mMap.get(key);
b = list.get(0);
c = list.get(1);
System.out.println("B : " + b);
System.out.println("C : " + c);
}
вам не нужно делать сплит. Это документация MultiMap, которая найдена:
MultiMap mhm = new MultiHashMap();
mhm.put(key, "A");
mhm.put(key, "B");
mhm.put(key, "C");
Collection coll = (Collection) mhm.get(key);
теперь, когда вы делаете get()
вызов multimap, он дает вам коллекцию. Первый элемент будет вашим b, а второй-вашим c.
вы также можете использовать ключ и объект для хранения нескольких значений в Multimap. Что-то вроде этого, MultiValueMap mv = новая LinkedMultiValueMap();