2

私は現在、クライアントがサーバーからデータを要求できるようにするクライアント/サーバー アプリケーションを作成しています。私はこれを完全にネイティブ Java で記述しようと考えており、テキスト ファイルとプロパティ ファイルを使用してストレージの大部分を処理しています。

しかし、次のものを保存する良い方法を見つけようとして、レンガの壁にぶつかりました。

ID    Language from    Language to    Cost/100w    Comment
7101    English    Mandarin    $5.00    Outsource

なぜ彼は単に配列リストを使用したり、別のテキスト ファイルにデータを保存したりしないのでしょうか? これらのオプションを検討しましたが、それぞれに欠点があります。

私の知る限り、配列リストでは整数を格納できません。次のコマンドでデータをクエリしたいと思います。

What is the cost of <ID> translation of <integer> words?

ご覧のとおり、合計に使用できるように、コストを整数として保存する必要があります。

テキスト ファイルでは、データを 1 行に格納する方法しか知りません。たとえば、次のようになります。

7101 English Mandarin $5.00 Outsource
7102 Greek Russian $12.00 -
etc. etc. etc. etc. etc

そのため、データを照会する方法がわかりません。

繰り返しになりますが、これを MySQL に格納して JDBC ドライバーを使用する必要はなく、アプリケーション全体をネイティブ Java で実行したいと考えています。

4

7 に答える 7

5

XML ファイルを使用して、データを適切に構造化することもできます。データのクエリに関しては、XPath を利用できます。

XML を使用すると、数値やすべてを含む複数のデータ形式を使用できるようになります。

例えば:

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <row id="7101">
        <language-from>English</language-from>
        <language-to>Mandarin</language-to>
        <cost>5.00</cost>
        <comment><![CDATA[Some comment]]></comment>
    </row>
</data>

XPath を使用してデータをクエリするには: 単語の翻訳のコストはいくらですか?

/data/row[@id=7101]/cost/number()

次に、その結​​果を使用して 100 で割り、単語の価格を求めます。

XML の操作は、JDOM2 などのライブラリーを使って簡単に操作できるはずです。

于 2012-08-22T21:01:22.027 に答える
3

レコードをモデル化する何かの TranslationType というオブジェクトを作成するだけです。ID、言語などのプロパティがあります...

次に、いくつかのスマート インターフェイスの背後に隠されているいくつかの永続化タイプを定義できます。たとえば、実行時であっても、必要なときにいつでも使用されている永続化の実装を交換できます。潜在的な永続化の実装: 単純なテキスト ファイルまたはバイナリ ファイル / シリアル化または JDBC (他の DB タイプ) など。

于 2012-08-22T20:55:02.840 に答える
2

Map (HashMap)ID をキーとして使用し、Translationすべての行データを含む値としてカスタム オブジェクトを使用することもできます。オブジェクトにマップを実装Serializableさせ、マップをディスクにシリアル化します。HashMapすでに実装していますSerializable

于 2012-08-22T21:02:43.873 に答える
1

MySQL を使用する必要があると誰が言いましたか? これには SQLite を使用できます。すべての主要な OS で動作する JDBC アダプターがあります。

于 2012-08-22T20:50:31.063 に答える
1

それらを一行に並べて何が悪いのですか?.txt<ID>という名前のファイルに含まれる行を検索します<integer>

次に、非常に多くの単語ごとに金額にちなんで名付けられたファイルを検索するコードを記述し、そのファイルで必要な特定の ID を検索できますか?

What is the cost of <7101> translation of <1000> words?1000w.txt という名前のファイルを見つけて、その ID を含む行を取得し、それを解析して合計を計算しますか?

于 2012-08-22T20:57:10.933 に答える
0

ほとんどの場合、 int データ型を配列に保存できます。ほんの一例:

    int[] arrayname = new int[n]
于 2014-09-19T21:45:47.390 に答える
0

良い解決策の 1 つは、データを XML ファイルとして保存することです。データ ファイルの XML スキーマを作成および定義し、問題のために保存するデータを作成します。この場合は、

ID 言語 言語から費用/100w コメント 7101 英語 北京語 $5.00 外注

データ ファイルのスキーマを定義すると、制御が強化され、問題のステートメントに適切に定義された型が適用されます。

JAX-B または XML-Beans ライブラリを使用して、定義されたスキーマからクラス タイプを生成することを選択できます。XML データを読み取り、アプリケーションの要件に従って、ストリームまたはオブジェクトのいずれかをアンマーシャリングおよびマーシャリングします。

于 2012-08-22T21:03:29.017 に答える