0

次の広告申込情報を領収書に保存する必要がありますquantity, description, upc, and price

これらを保存するためのJavaでの最良の方法は何ですか?レシートプリンターと同じように、ある時点で1行ずつ出力に印刷する必要があります。ただし、要素を追加および削除するため、コレクション内の要素の数は任意である必要があります。

5 item1 new item 324234  $4.99
1 item2 dish soap 34235346 $6.33

..等々

4

2 に答える 2

4

表現したいアイテムを反映したオブジェクトを作成することを考えます。たとえば、のがsであるReceiptオブジェクトがある場合があります。ListReceiptItem

public class Receipt {
    private List<LineItem> receiptItems;

    // ... 

    public void add(LineItem lineItem) {
        // be mindful of handling duplicates if needed
        receiptItems.add(lineItem); 
    }

}

各アイテムには、追跡したい値が含まれます

public class LineItem {
    private int quantity;
    private String description;
    private String upc;
    private BigDecimal price; // depending on the accuracy you need, you might be able to get away with double

    // ...

    public String getDescription() {
        return description;
    }

    // ... add more getters to your heart's content ...
}

アップデート:

プライベートメソッドにアクセスするには、いくつかのゲッターまたはアクションメソッドを作成します。例として上記のいくつかを追加しました。

于 2012-07-03T23:14:37.290 に答える
3

ラインアイテムを表すために、各アーティビュートのゲッターとセッターを使用して簡単なクラスを作成します。次に、リストを使用して、レシート内のラインアイテムのシーケンスを表します。最後に、ラインアイテムのリストと、日付、合計金額、税金などの他の属性の束を含む領収書クラスが必要になる可能性があります。

使用するList実装クラスに違いはおそらくありません。LinkedListは問題なく、ArrayListも問題ありません。パフォーマンスの違いは検出できません。


(ハッシュテーブルのようなオープンデータ構造を使用してこれを表現しようとしないでください。コードがより複雑になり、保守がはるかに困難になります。また、オープンデータ構造は時間とスペースの効率が低下します...心配な場合はそれについて...あなたはおそらくあなたのプロジェクトのこの段階にいるべきではありません。)

于 2012-07-03T23:11:59.783 に答える