-1

配列リストの各レコードを取得するイテレータを取得したかった (配列リスト内の各オブジェクトには 3 つのフィールドがあります)。ここで、取得したレコードを関数に送信して、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 のコンテンツの使用方法がわかりません。

4

2 に答える 2

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>();
于 2012-04-26T13:26:25.013 に答える
0
Iterator myItr  =  myList.iterator();
Item myItem = myItr.next();
myFunction(myItem);

それはあなたが望んでいたものですか?

将来、試行したコードを投稿することをお勧めします。人々はあなたのためにコードを書くことを好みませんが、コードを修正するのを手伝いたいと思っています。そうすればあなたは学び、彼らの側だけでなくそれ以上の努力を示します.

于 2012-04-26T13:19:46.547 に答える