2015-06-25 3 views
0

У меня есть связанная карта, в которой есть ключ номера предложения и значение оценки предложения.Java-привязка hashmap к строковому массиву

4=104 
3=104 
1=106 
7=130 
8=139 
9=168 
2=199 
5=330 

Мне нужно сохранить его в этом порядке, потому что это программа с текстом summiraztion. У меня также есть массив строк, который содержит каждое из предложений, которые были разделены с помощью puncutation. Как создать новый строковый массив, который первым ключом будет предложение 4, соответствующее первому ключу в связанной карте. Последний ключ в массиве будет предложение 5.

Благодаря

+0

Что вы имеете в виду, когда вы говорите «ключ», относящийся к массиву строк? – Smutje

+0

'HashMap test = new HashMap (); test.put (4, «Мое предложение»); System.out.println (test.get (4)); 'Просто держите отдельный' int [] 'с вашими ключами в том порядке, в котором вы хотите' {4, 3 и т. Д. 5} ', тогда цикл в этом массиве и используйте ключ для извлечения предложения из 'HashMap'. – brso05

+0

К сожалению, я имею в виду индекс строкового массива, например [0], как бы реализовать код выше в цикле for –

ответ

0

Что-то вроде -

List<String> orderedSentenceList = new ArrayList<String>(); 
for (Map.Entry<String, String> entry : yourMap.entrySet()) { 
    String key = entry.getKey(); 
    orderedSentenceList.add(originalSentenceList.get(key-1)) 
} 

Использование orderedSentenceList сейчас

+0

Да, но мое предыдущее предложениеList было строковым массивом String [], а не hashmap. –

+0

Я использовал previousSententenceList как список, а не карту. Если это String [], вы можете использовать originalSentenceList [key-1]. yourMap - это карта, которая использовалась в вашем вопросе в верхней части –

0

Это то, что вы ищете?

import java.util.Map.Entry; 

String[] array = new String[map.size()]; 
int i = 0; 
for (Entry<Integer, String> entry : map.entrySet()) { 
    array[i++] = entry.getValue(); 
} 
0

Я надеюсь, что я понимаю ваш вопрос, но здесь идет:

Это использование String[] только, как вы просили.

String[] sentenceList = new String[yourLinkedHashMap.size()]; 
for (Map.Entry<Integer, String> entry : yourLinkedHashMap.entrySet()) { 
    sentenceList[entry.getKey() - 1] = entry.getValue(); 
} 
0

Нечто подобное поможет вам развить ваше собственное решение

String []sentences=new String[mp.size()] ; 
//mp is the map 
    Iterator it = mp.entrySet().iterator(); 
    int i=0; 
    while (it.hasNext()) { 
     Map.Entry pair = (Map.Entry)it.next(); 
     sentences[i++]=pair.getValue(); 
    } 
Смежные вопросы