2016-05-23 2 views
1

У меня есть APIkey вроде этого:Как добавить несколько значений, разделенных запятой, в одной из ключевых

String mainUrl = "http://smshorizon.co.in/api/sendsms.php?";"&mobile= MOBILE_NUMBER1, MOBILE_NUMBER2, MOBILE_NUMBER3"; 

Я хочу добавить несколько номеров мобильных телефонов, как значений, разделенных запятой к ключу ("&mobile="). Я попытался использовать карту hasp со списком, но проблема в том, что она добавляет значения как массив, потому что это коллекция.

HashMap<String, Object> hm = new HashMap();  
List<String> list = new ArrayList(); 

for (int i = 0; i < numbers.length; i++) { 
    list.add(numbers[i]); 
    hm.put("&mobile=", list); 
} 
System.out.println("HashMap: " + hm.get("&mobile=")); 
System.out.println("message: " + message); 

//prints HashMap: [9963718730, 9705245186, 9849033956] 

Как добавить его в качестве значений, разделенных запятыми, например:

String mainUrl = "http://smshorizon.co.in/api/sendsms.php?";"&mobile= MOBILE_NUMBER1, MOBILE_NUMBER2, MOBILE_NUMBER3"; 
+0

В Hashmap вы хранения списка в качестве значения для ключа "& мобильных =". Вместо этого вы просто создаете строку и добавляете номер мобильного телефона, разделяя ее запятой. –

+0

Простейшим способом было бы использовать 'StringBuilder' и перебирать ваши номера, добавляя сам номер и запятую после. Затем вы удалите последний символ (конечную запятую) и поместите строну, которую вы построили, в качестве своего значения. – Mena

+0

Из библиотеки Apache Commons: String str = StringUtils.join (list, ','); hm.put ("& mobile =", str); –

ответ

2

С Java 8, это может быть сделано как это:

String[] numbers = {"MOBILE_NUMBER1", "MOBILE_NUMBER2", "MOBILE_NUMBER3"}; 
System.out.println(Arrays.stream(numbers).collect(Collectors.joining(","))); 

Outp ут:

MOBILE_NUMBER1,MOBILE_NUMBER2,MOBILE_NUMBER3 

В предыдущих версиях Java использовать StringBuilder так:

StringBuilder buffer = new StringBuilder(); 
for (int i = 0; i < numbers.length; i++) { 
    if (i > 0) { 
     buffer.append(','); 
    } 
    buffer.append(numbers[i]); 
} 
System.out.println(buffer); 

Выход:

MOBILE_NUMBER1,MOBILE_NUMBER2,MOBILE_NUMBER3 
+0

Хотя все ответы работают. Я принимаю это как ответ для функции java 8 – Satyadev

1

Почему бы вам не попробовать с этим:

HashMap<String, Object> hm = new HashMap();  
String mobileNumbers; 

for (int i = 0; i < numbers.length; i++) { 
    mobileNumbers = mobileNumbers + "," + numbers[i]; 

} 
mobileNumbers = mobileNumbers.subString(1); //To remove first comma. 
hm.put("&mobile=", mobileNumbers); 

System.out.println("HashMap: " + hm.get("&mobile=")); 
System.out.println("message: " + message); 

//prints HashMap: 9963718730, 9705245186, 9849033956 
2

Самый простой способ будет использовать StringBuilder и итерацию над вашими номерами, добавив номер и запятую после. Затем вы удалите последний символ (конечную запятую) и поместите строну, которую вы построили, в качестве своего значения.

Пример

StringBuilder sb = new StringBuilder(); 
// assuming the "numbers" variable is a String array or collection 
for (String number: numbers) { 
    sb.append(number).append(","); 
} 
// removing trailing "," 
sb.deleteCharAt(sb.length() - 1) 
hm.put("&mobile=", sb.toString()); 
Смежные вопросы