-3

現在、次のような ArrayList があります。

[ [id, type, name, $], [id, type, name, $], [id, type, name, $], [id, type, name, $]....]

インデックス 0 を 1 と比較したい場合、またはコンマの後に別の値を追加したい場合は、次のようにします。

[ID、タイプ、名前、$、YOLO]

どうすればこれを行うことができますか?ありがとう!

編集:ここに何か:

私はExcelからデータを読んでいます:

    for (int i = first; i <= last; i++) {
        Row row = sheet.getRow(i);
        Cell id = row.getCell(0);
        Cell type = row.getCell(1);
        Cell name = row.getCell(2);
        Cell $ = row.getCell(3);

    List temp = new ArrayList();
    temp.add(id);
    temp.add(type);
    temp.add(name);
    temp.add($);
  sData.add(temp);

}

sData を印刷すると、先ほど述べたとおりの結果が得られます。

4

2 に答える 2

0

Java の ArrayList は、オブジェクトのコレクションを保持する動的構造です。

あなたの場合、属性id、type、name、および$を持つオブジェクトがあり、それらを .add(Object) メソッドを使用してArrayListに保存していると思われます。

必要なのは、オブジェクトに別の属性を追加し、同じメソッドを使用してそのオブジェクトを ArrayList に追加することです。

インデックスの比較についてあなたが言うこと....(各オブジェクトのid変数を意味すると思います)。それも簡単です (オブジェクトに適切なメソッドを実装するとします。変数 id については、メソッド setId と getId ... などを用意する必要があります):

if(arrayList.get(0).getId == .... ){
    //do something
} 

アップデート

public class MyExcelRowObject {

    private String id;
    private String type;
    private String name;
    private String $;

    public MyExcelRowObject(){
        super();
    }

    public MyExcelRowObject(String id, String type, String name, String $) {
        this.id = id;
        this.type = type;
        this.name = name;
        this.$ = $;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }


    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    public String get$() {
        return $;
    }

    public void set$(String $) {
        this.$ = $;
    }

}

これがオブジェクトの操作です

    //this is your Object's holder
    ArrayList<MyExcelRowObject> myList = new ArrayList<MyExcelRowObject> ();

    //here you manipulate your rows and add them to your MyExcelRowObject objects
    for (int i = first; i <= last; i++) {
        MyExcelRowObject tmpObj = new MyExcelRowObject();
        Row row = sheet.getRow(i);
        tmpObj.setId(row.getCell(0));
        tmpObj.setType(row.getCell(1));
        tmpObj.setName(row.getCell(2));
        tmpObj.set$(row.getCell(3));

        myList.add(tmpObj);
    }

    //here is how you manipulate your List objects
    if(myList.get(0).getId().equals(myList.get(1).getId())){
        //the  ids of first and second row are the same
    }
于 2012-07-14T04:40:09.050 に答える
0

ArrayLists の ArrayList がある場合、次のようにして要素を最初のリストに追加できます。

listOfLists.get(0).add("YOLO");

2 つのリストを比較するのは別の話です...

両方のリストを繰り返し処理し、各項目を比較する必要があります。

boolean listsAreEqual(List<Cell> listOne, List<Cell> listTwo)
{
    if (listOne.size() != listTwo()) {
        return false;
    }

    for (int i = 0; i < listOne.size(); i++) {
        if (! listOne.get(i).equals(listTwo.get(i)) {
            return false;
        }
    }

    return true;
}

これは、 (それが何であれ、ここでは重要ではありません)equalsのために実装したことを前提としています。Cell

サブリスト内の各アイテムのタイプは であるようにCell見えるため、次のようにリストを定義する必要があります。

List<Cell> someList = new ArrayList<Cell>();

これにより、各要素が同じ型になります。

これはコンパイル時に適用されます。これは素晴らしいことです。

于 2012-07-14T04:40:13.037 に答える