0

[[58, 89, -50], [58, 50, -89], [89, 50, -58], [-51, -35, 75], [-51, -75, 35], [-35, -75, 51], [-83, -60, -97], [-83, 97, 60], [-60, 97, 83], [null]]

上記の例では、LinkedHashSet<Integer> [size<N><3>]N 番号があります。の Integer オブジェクトであり、各オブジェクトには 3 つのプリミティブ int 値が含まれています。取得できるように、3 つの異なる int 型リストでこれにアクセスしたい

list1[1] : {58,58,89,-51,.......}
list2[1] : {89,50,50,-35,.......}
list3[1] : {-50,-89,-58,75.......}

C言語で行うように、Pが最初のノードを指すようにします

struct Node *P=Start;
int i=0;
while(P!=NULL){
int a[i]=P->data1;
int b[i]=P->data2;
int c[i]=P->data3;
i++;}

Javaでどうなるか助けてください.Thanks!Ashish

4

2 に答える 2

0

3 つの異なる Lists を実装できます。これを行う最も簡単な方法は、 java.util.AbstractList<E> http://docs.oracle.com/javase/6/docs/api/java/util/AbstractList.htmlをオーバーライドし、3 要素リストから要素を選択するクラスを作成することです。

これがあなたの解決策です:

import java.util.ArrayList;

public class DemuxList extends java.util.AbstractList<Integer>{

    ArrayList<Integer[]> listToDemux;
    int listIndex;

    DemuxList(ArrayList<Integer[]> listToDemux, int listIndex) {
        this.listToDemux = listToDemux;
        this.listIndex = listIndex;
    }

    @Override
    public Integer get(int index)
    {
        Integer[] el = listToDemux.get(index);
        if (el != null) {
            return el[listIndex];
        } else {
            return null;
        }        
    }

    @Override
    public int size()
    {
        return listToDemux.size();
    }
}

次のように使用できます。

ArrayList<Integer[]> fullList = new ArrayList<Integer[]>();
DemuxList l0 = new DemuxList(fullList, 0);
DemuxList l1 = new DemuxList(fullList, 1);
DemuxList l2 = new DemuxList(fullList, 2);
于 2012-05-31T07:55:07.087 に答える
0

問題を解決しました。コードは次のとおりです。

LinkedHashSet<Set<Integer>> r;
i=0
for(<Set<Integer>> set:r)
    ar[i++]=s.toArray(new Integer[3]);

[r.length][3]ここで、r の内部セットのサイズは 3 であるため、ar はサイズの 2D 配列です。

于 2012-06-25T07:12:12.690 に答える