迭代器映射问题

时间:2012-04-26 13:15:51

标签: java collections iterator maps

我想要一个迭代器,它检索一个数组列表的每个记录(数组列表中的每个对象都有三个字段)。现在,我希望将检索到的记录发送到一个函数,我想在其中填充Map。

有人可以建议怎么做吗??

public class MainClass {

public void func1(int count){
    System.out.println("iterator's record retrieved. Next is to populate"+count+"to the map");
    //populateMap();
    return;
}

public static void main(String[] args) {
    // TODO Auto-generated method stub

    MainClass mc=new MainClass();

    ThreeFields tf1=new ThreeFields();
    ThreeFields tf2=new ThreeFields();
    ThreeFields tf3=new ThreeFields();

    tf1.setField1("A");
    tf1.setField2("B");
    tf1.setField3("C");

    tf2.setField1("D");
    tf2.setField2("E");
    tf2.setField3("F");

    tf3.setField1("G");
    tf3.setField2("H");
    tf3.setField3("I");

    ArrayList al=new ArrayList();
    Object al1;
    al.add(tf1);
    al.add(tf2);
    al.add(tf3);

    Iterator i=al.listIterator();

    while(i.hasNext()){
        al1=i.next();


    }

}

}

我不了解如何使用检索到的对象al1的内容。

2 个答案:

答案 0 :(得分:1)

考虑将原始列表的引用传递给您的方法,将其转换为如下地图:

 Map<Integer, ThreeFields> convert2Map(List<ThreeFields> list) {
      Map<Integer, ThreeFields> map = new HashMap<Integer, ThreeFields>(list.size());
      // Use LinkedHashMap instead of HashMap if you want to retain the insertion order
      for (int i=0; i<list.size(); i++)
          map.put(i, list.get(i));
      return map;
 }

当您在调用方法中声明列表时,也应该使用泛型。所以请使用以下表格:

List<ThreeFields> al = new ArrayList<ThreeFields>();

答案 1 :(得分:0)

Iterator myItr  =  myList.iterator();
Item myItem = myItr.next();
myFunction(myItem);

是你想要的吗?

您可能希望将来发布您尝试过的代码。人们不喜欢为你编写代码,而是喜欢帮助你纠正它。这样你就可以学习,而且不仅仅是他们的努力。