2017-10-04 116 views
1

假設我有如下數據集:支持各種數據類型的數據結構

Seq1 | Seq2 | Seq3 |疾病|年齡

====================================

A | T | G |發燒,咳嗽| 24

T | C | G |高血壓| 56

C | T | A |糖尿病,高血壓| 79

我應該選擇哪種數據結構來支持字母數據{A/T/C/G},集值數據{糖尿病,高血壓}和數字數據{年齡}?

如果我有一個像coount查詢:SEQ2 = T,病症=「高血壓」,年齡> 50 ==>答案應該是2

我想知道什麼樣的數據結構的我應該用於適應所有類型的數據和上述查詢有效?或者我需要構建3個數據結構,然後交叉結果?

回答

0

如果您使用的是OOP語言,請考慮創建一個包含您需要的所有屬性(Seq 1,Seq 2,Seq 3,症狀列表,Age)的類。然後,您可以實例化該類並將結果對象放入各種數據結構中(如列表)。

0

類應該是處理這種結構的正確方法,在C#一個簡單的實現應該是這樣的:

using System.Collections.Generic; 

namespace DataStructure 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // Creating Data Set 
      var AllDataSet = new List<DataStructure>(); 
      AllDataSet.Add(
       new DataStructure(new char[] { 'A', 'T', 'G' }, new string[] { "Fever", "Cough" }, 24)   
      ); 

      AllDataSet.Add(
       new DataStructure(new char[] { 'T', 'C', 'G' }, new string[] { "High Blood Pressure" }, 56) 
      ); 

      AllDataSet.Add(
       new DataStructure(new char[] { 'A', 'T', 'G' }, new string[] { "Diabetes", "High Blood Pressure" }, 79) 
      ); 
     } 
    } 

    public class DataStructure 
    { 
     public char[] DNAChar; 
     public string[] SetValuedData; 
     public int Age; 

     public DataStructure(char[] dnaChar, string[] setValuedData, int age) 
     { 
      DNAChar = dnaChar; 
      SetValuedData = setValuedData; 
      Age = age; 
     } 

     // Add other logic here 
    } 
} 

然後你就可以添加相應的功能來實現你的邏輯。希望,這會有所幫助!