0

Javaプロパティファイルから2D配列データを取得し、これらのデータをHashMapオブジェクトに格納しようとしています。困惑するのは、Eclipseが2D配列からデータの一部しか取得しないことです。

コードは次のとおりです。

Properties config = new Properties();
config.load(new FileInputStream("categories.properties"));
String[][] categories = fetchArrayFromPropFile("content", config);
HashMap<String,Integer> hashmap = new HashMap<String,Integer>();
for (String[] mapping : categories)
{
  hashmap.put(mapping[0], 0);
}

private static String[][] fetchArrayFromPropFile(String propertyName, Properties propFile) {
  String[] a = propFile.getProperty(propertyName).split(";");
  String[][] array = new String[a.length][a.length];
  for(int i = 0;i < a.length;i++) {
    array[i] = a[i].split(",");
  }
  return array;
}

カテゴリ.propertiesファイル:

content=Advertising,0;Agriculture,0;Art,0;Automotive,0;Aviation,0;Banking,0;Beverages,0;Biotechnology,0;Business,0;Crime,0;Disasters,0;Economics,0;Education,0;Elections,0;Fashion,0;Food,0;Hardware,0;Health,0;Hotels,0;Intellectual Property,0;Investing,0;Labor,0;
Law,0;Marriage,0;Mobile Devices,0;Politics,0;Real Estate,0;Renewable Energy,0;Robotics,0;Science,0;Social Media,0;Software and Internet,0;Space,0;Sports,0;Technology,0;Traditional Energy,0;Travel,0;Video Games,0;War,0;Weather,0;Entertainment,0;No Topic,0; Business_Finance,0;Disaster_Accident,0;Entertainment_Culture,0;Environment,0;Health_Medical_Pharma,0;Hospitality_Recreation,0;Human  Interest,0;Law_Crime,0;Religion_Belief,0;Technology_Internet,0;War_Conflict,0;Other,0;
4

3 に答える 3

0

私はあなたが欲しいと思います:

String[][] array = new String[a.length][2];
于 2012-10-02T03:01:10.033 に答える
0

これは、プロパティファイルの形式が

content=XXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

ご覧のとおり、1つのプロパティに対して2行に分割されています。したがって、コンテンツプロパティを読み取るときは、最初の行のみが読み取られ、すべてのデータが含まれるわけではありません。

その場合は、このように手動でプロパティファイルを1行に連結してください。

content=Advertising,0;Agriculture,0;Art,0;Automotive,0;Aviation,0;Banking,0;Beverages,0;Biotechnology,0;Business,0;Crime,0;Disasters,0;Economics,0;Education,0;Elections,0;Fashion,0;Food,0;Hardware,0;Health,0;Hotels,0;Intellectual Property,0;Investing,0;Labor,0;Law,0;Marriage,0;Mobile Devices,0;Politics,0;Real Estate,0;Renewable Energy,0;Robotics,0;Science,0;Social Media,0;Software and Internet,0;Space,0;Sports,0;Technology,0;Traditional Energy,0;Travel,0;Video Games,0;War,0;Weather,0;Entertainment,0;No Topic,0; Business_Finance,0;Disaster_Accident,0;Entertainment_Culture,0;Environment,0;Health_Medical_Pharma,0;Hospitality_Recreation,0;Human  Interest,0;Law_Crime,0;Religion_Belief,0;Technology_Internet,0;War_Conflict,0;Other,0;

その場合、コードは正常に機能し、すべてのデータが読み取られます。

于 2012-10-02T03:26:25.837 に答える
0

「\」を使用して、1つのプロパティの異なる線を接続します。

例えば:

  a=b \
    c
于 2012-10-02T03:40:34.900 に答える