-2

特定のIDを保存し、そこに存在するかどうかを確認する必要があります。
連結された文字列または配列/リストのいずれかを使用できます。どちらがより適切で高速な方法です。これが実際のデータの編成方法です。

  • 1年目
    • 1か月目
      • 1日目
      • 2日目
      • 3日目
    • 2か月目
      • 6日目
      • 2日目
      • 3日目
  • 2年目
    • 3か月目
      • 1日目
      • 3日目
      • 7日目
    • 6か月目
      • 6日目
      • 2日目
      • 3日目
4

2 に答える 2

6

私は間違いなく何らかの形のコレクションを使用します。包含のみを気にする場合は、Set<String>ある種のを使用する必要があります(たとえばHashSet<String>、またはLinkedHashSet<String>、ハッシュの衝突がかなりの数ない限り、両方ともO(1)の複雑さを与えます)が、念のため、連結された文字列は使用しないでください。

データは自然に連結された文字列ではなく、文字列のコレクションです。何らかの代替形式(単一の文字列など)が有意義な利益をもたらすという本当に良い証拠がない限り、データは常に最も自然な表現で保持してください。ほとんどの場合、データを自然な表現に保つことで、コードがより明確になり、操作が簡単になります。また、実際のボトルネックがどこにあるかを見つけたときに、後で最適化するのも簡単になります。

于 2012-07-07T14:28:53.967 に答える
4

HashSetusecontainsメソッドを作成します。StringまたはArrayListはO(n)複雑にHashSetなりますが、O(1)複雑になります。

于 2012-07-07T14:28:19.573 に答える