2017-02-01 8 views
0

私は<文字列>ArrayListに項目のリストを追加するには<String> in java?

prefix.propertiesをArrayListにロードする必要がある単語のリストを持っている

vocab\: = http://myweb.in/myvocab# 
hydra\: = http://www.w3.org/ns/hydra/core# 
schema\: = http://schema.org/ 

"単語:" 実際には "単語:" .Slash(\)は使用されていますそれは特殊文字であるためコロン(:)文字を読み取る。 Dictionary.javaで

Dictionary.java

public class Dictionary { 
    public static ArrayList<String> prefix = new ArrayList<>(); 
    static { 
     Properties properties = new Properties(); 
     InputStream input = null; 
     input = ClassLoader.getSystemResourceAsStream("prefix.properties"); 
     System.out.println(input!=null); 
     try { 
      properties.load(input); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     Set<Map.Entry<Object, Object>> entries = properties.entrySet(); 
     for(Map.Entry<Object, Object> E : entries) 
     { 
      prefix.add(E.getKey().toString()); 
      prefix.add(E.getValue().toString()); 
     } 
    } 
} 

、ArrayListの接頭辞は、私は別のクラスでは、いくつかのデータを照会しています

prefix = [ 
      "vocab:", 
      "http://myweb.in/myvocab#", 
      "hydra:", 
      "http://www.w3.org/ns/hydra/core#", 
      "schema:", 
      "http://schema.org/" 
     ] 

を持つことになります。例えばのために

public class QueryClass 
{ 
    public ArrayList<String> queryResult(String findKey) 
    { 
     ArrayList<String> result = new ArrayList<String>(); 

     ArrayList<String> prefix = Dictionary.prefix; 
     Iterator<String> iterator = prefix.iterator(); 

     while (iterator.hasNext()) 
     { 
      String currentKey = iterator.next()+findKey; 
      /** 
       Here my logic to search data with this currentKey 
      */ 
     } 
     return result; 
    } 
} 

問題:.propertiesファイルを提供しながら、
要素の数が奇数の可能性があるので、私は.propertiesファイルからロードするには、この方法を避けたいが存在することができる(キー、値)ペアの方法でデータを格納します。


なぜ別ファイルからロードする必要があるのですか?なぜなら、将来、私はprefix.propertiesファイルにキーワード/ Stringを追加する必要があるからです。


これを行う別の方法はありますか?

答えて

3

ホイールを再発明しないでください。

ファイル形式を定義できる場合は、Javaプロパティーに移動します。

プロパティクラスにはメソッドgetProperty(String, String)があり、2番目の引数を使用してのデフォルトのの値を渡すことができます。このメソッドは、値を持たないキーをフェッチするために使用できます。

独自のフォーマットを発明することには本当に注意が必要です。代わりに、私は既にそこにあるものを再利用する方法を検討するでしょう。コードを書くことは道路を建設することと似ています。人々は、建設された新しい道路がそれぞれ将来の維持努力につながることを忘れてしまいます。

さらに、list.add(strValue)を呼び出して文字列のリストに文字列値を追加します。それがすべてです。

コメントを編集:「javaのプロパティ」があなたが探しているものでない場合、 他の形式を使用することを検討してください。たとえば、一部のデータを持続的に使用することができます。JSONベースの形式。そして、既存のJSONパーサを探してください。実際、あなたのデータはJSONのように見えます。

+0

実際に私はプロパティファイルを必要としません。私の要件は、単語のリストを持ち、実行時にこれらの単語のリストがQueryClass.javaクラスの "ArrayList 接頭辞"に読み込まれます。なぜ私は別々に保管したいのですか?なぜなら、他のクラスで使用されているこれらの単語のリストも同じですからです。だから私は単純なテキストファイルや他の方法でそれを行うことはできますか? – Badman

+0

それから私の更新を見てください。 – GhostCat

+0

JSON形式ではこれを処理できますが、私の問題はJSONと一緒に行かなくてはならないと思っています。単語のリストは単一の文字列とJavaクラスの関数にありますが、リストに追加する単語を追加する必要があるため、これを別のファイルに保存します。 – Badman

0

には、ArrayListを使用する必要がなぜ私はよく分からないが、あなたはこれらのプロパティのキー/値を渡したい場合は、2つのより良い方法があります:

  1. 使用プロパティそのもの。
  2. ハッシュマップに変換します。
関連する問題