ОК, я буду пройдите по образцу кода и покажите, где вы столкнулись с проблемами, и предложите, как вы можете заставить его работать.
ArrayList<HashMap<String,String>> keys = appPrefs.getDownloadUrls();
Это (выше) прекрасно - но помните keys
является ArrayList
. Это список HashMap
объектов, но это по-прежнему список
ArrayList<String> urls = new ArrayList<String>();
ArrayList<String> filenames = new ArrayList<String>();
Это хорошо, но в типичной Java, было бы лучше иметь List<String> urls = new ArrayList<String>();
, чтобы попытаться сохранить ваши переменные, используя интерфейсы, а не конкретных реализаций.
Iterator myIterator = keys.keySet().iterator();
while(myIterator.hasNext()) {
Это не будет работать, потому что keys
является ArrayList
, и список не имеет keySet()
вы хотите сделать:
Iterator<HashMap<String,String> listIterator = keys.iterator();
while(listIterator.hasNext()) {
HashMap<String,String> map = listIterator.next();
Iterator<String> myIterator = map.keySet().iterator();
while(myIterator.hasNext()) {
Или, еще лучше было бы использовать Java 1.5 для каждого() петли:
for(Map<String,String> map : keys) {
for(String url : map.keySet()) {
-
urls.add((String)myIterator.next());
Вышеупомянутое будет работать, как только вы получите myIterator
, чтобы быть итератором по карте, а не списком.
filenames.add((String)keys.get(myIterator.next()));
Но это не будет по 2 причинам
- Поскольку
keys
еще список.
- Если вы вызываете
next
на итераторе дважды, вы получаете 2 разных объекта.
Вы должны иметь:
String url = myIterator.next();
urls.add(url);
filenames.add(map.get(url));
Или, если вы используете для (каждый) цикл я предложил выше, то вы можете пропустить эту первую строку.
Надеюсь, что это поможет - если что-то неясно, добавьте комментарий.
Примечание: Решениеsolilo
намного проще и является хорошим способом сделать это, и я отвечу здесь, чтобы помочь вам увидеть, с чем вы столкнулись.
Пожалуйста, напишите, что вы сделали до сих пор, и мы поможем вам закончить его. – Tim
Ссылка может помочь вам. [Http://stackoverflow.com/questions/7683960/how-to-iterate-arraylisthashmapstring-string] –
Как вы можете видеть, я хочу добавить их в список в моем коде, я знаю, как конвертировать это для строки [] впоследствии – brux