3
    List<String[]> sarray;
    ArrayList<ContentTable> currentData=new ArrayList<ContentTable>();

    //here sarray is initialized with data
    sarray = reader.readAll();


    for(String[] arr : sarray) 
        {
          System.out.println("array data "+ Arrays.toString(arr));
        }

        for(ContentTable ct : currentData)
        {
            System.out.println("list data "+ct.getId() +" "+ ct.getSubid() +" "+ct.getChpid()+" "+ct.getSec_name()+" "+ct.getContent());
        }   

array と list の 1 つの結果の出力:

配列データ -> [9, 10, 83, Concepts: 1-10, <p>We&#x2019;ll discuss many of the concepts in this chapter in depth later. But for now, we need a brief review of these concepts to equip you for solving exercises in the chapters that follow.</p>]

リストデータ -> 9 10 83 Concepts: 1-10 <p>We&#x2019;ll discuss many of the concepts in this chapter in depth later. But for now, we need a brief review of these concepts to equip you for solving exercises in the chapters that follow.</p>

 //fields with getters and setters in ContentTable Class
        public class ContentTable {

            int id;
            int subid;
            int chpid;
            String sec_name;
            String content;
          }

今私が達成したいのは、2 つのリストを作成することです。

ArrayList<ContentTable> updatedData=new ArrayList<ContentTable>();
ArrayList<ContentTable> addedData=new ArrayList<ContentTable>();

sarrayこれらは、の比較後にデータで埋められcurrentdata、そのような方法で、

ct.getSec_name()の特定ct.getContent()のインデックスが にcurrentdata存在するデータと等しくない場合は、にsarray追加されますupdatedData

と、

特定のインデックスの、がどのデータとも等しくない場合、ct.getId()それは addedData に追加されますct.getSubid()ct.getChpid()sarray

Arraylist currentDataの各要素を の各要素と比較するには時間がかかる可能性があるため、複雑さを軽減してこれを行うためのエレガントな方法は何でしょうかArrayList sarray

4

2 に答える 2

0

したがって、私の問題に対するより良い解決策は、 a を と比較するのではなくList<String[]>、別のArrayListものに変換してから、新しいものと古いものを比較することでした。そして、それは非常にシンプルで簡単なアプローチであることがわかりました。List<String[]>ArraylistArraylist

                for(String[] arr : sarray) 
                {
                  ContentTable data=new ContentTable();

                  for(String s : arr)   
                  {
                         data.setId(Integer.parseInt(s));
                         data.setSubid(Integer.parseInt(s));
                         data.setChpid(Integer.parseInt(s));
                         data.setSec_name(s);
                         data.setContent(s);
                  }
                  newData.add(data);
                }

現在、newData には、currentData と比較したい新しいデータがあります。

于 2013-07-15T06:57:29.947 に答える