1

内にセットを格納するプログラムを実装しましたLinkedlist。リンクされたリストを印刷すると、たとえば[1,2,3,4,5].

私が望むのは、角括弧を中括弧に変更することです。たとえば、「{」と「}」

文字列操作を使用できないため、toStringメソッドをオーバーライドする必要があります。

サブクラスを作成する必要があることを知っているという事実以外に、これを行う方法についてはわかりません。私を困惑させるのはその方法そのものです。

public class outputSets
    {    
        @SuppressWarnings({ "unchecked", "rawtypes", "unused" })
        public static void main(String args[]) 
        {    
        LinkedList x0 = new LinkedList();
        LinkedList x1 = new LinkedList();
        LinkedList x2 = new LinkedList();
        LinkedList x3 = new LinkedList();
        LinkedList x4 = new LinkedList();
        LinkedList x5 = new LinkedList();
        LinkedList x6 = new LinkedList();

        x0.add(new Integer(8));

        for(int i=1; i<8; i++)
        {
            x1.add(new Integer(i));
        }

        x1.add((x0.getFirst()));

        x2.addAll(x1);
        x2.add(new Pair(1, x1));

        x3.add(new Pair(x2,x1));

        //x4.addAll(tree.union(x3, x2));

        //x5.add(tree.difference(x4, x1));

        //x6.add(tree.intersection(x4, x1));
        /*
        Iterator i0 = x0.listIterator();
        Iterator i1 = x0.listIterator();
        Iterator i2 = x0.listIterator();
        Iterator i3 = x0.listIterator();
        Iterator i4 = x0.listIterator();
        Iterator i5 = x0.listIterator();
        Iterator i6 = x0.listIterator();
        */

        System.out.print(x0.getFirst());
        System.out.println();
        SetArray(x1);
        System.out.println();
        SetArray(x2);

        System.out.println();
        System.out.println();
      }


    @SuppressWarnings("rawtypes")
    private static void SetArray(LinkedList x0)
    {
        for(int index=0; index < x0.size() ; index++)
        {
            if (index == 0)
            {
                System.out.print(x0.get(index));
            }
            else
            {
                System.out.print(", " +
                        "" + x0.get(index));
            }
        }

    }
}
4

3 に答える 3

4

Listオブジェクトを属性として受け取りString、このリストの内容を連結して返すヘルパー メソッドを作成することもできます。そうすれば、継承は冗長です。

于 2013-01-24T22:20:08.550 に答える
3

出力は、 (およびマップを除く他のほとんどのコレクションが) 継承するAbstractCollection.toString()-の実装に完全に依存しています。LinkedListこの実装は次のようになります (少し単純化されています)。

public String toString() {
    Iterator<E> it = iterator();
    if (! it.hasNext())
        return "[]";

    StringBuilder sb = new StringBuilder();
    sb.append('[');
    for (;;) {
        E e = it.next();
        sb.append(e);
        if (! it.hasNext())
            return sb.append(']').toString();
        sb.append(", ");
    }
}

これをガイドラインとして使用すると、角括弧を含まない独自の実装を作成するのは非常に簡単です。オーバーライドする独自のコレクションを作成するかtoString()、別のユーティリティ メソッドをLinkedList input引数として取ることができます (その場合は明らかに に置き換えiterator()ますinput.iterator())。

于 2013-01-24T22:18:15.380 に答える
1

extends LinkedList次のようなメソッドを含むクラスを作成します。

@Override
public String toString() {

}

このメソッドは、次のようにリスト項目にアクセスできます。

Iterator<Integer> it = this.iterator();

while(it.hasNext()) {
    Integer nextItem = it.next();
}
于 2013-01-24T22:15:54.597 に答える