2017-04-14 131 views
1

你好每個數組字符串,如果我想比較這串:比較與詮釋

private String str; 

public String str() { 
    return str; 
} 

public void str(String str) { 
    this.str = str; 
} 

包含一個int變量:

str = StringUtils.collectionToCommaDelimitedString(var); 

其中var是一個數組列表

List<Integer> var = new ArrayList<>(); 

在此列表中插入此結果:

for (int hour=0; hour<24; hour++) { 
if (my conditions is ok) {   
      var.add(hour);} 

幷包含一個示例var = [3,10,18],因此str = [3,10,18],如果我想在我的方法中比較一個0-23小時的字符串,並返回1如果equals每一個或0

@Override 
public Map<String, Object> my() { 
    List<Integer> test = new ArrayList<>(); 
    for (int hour=0; hour<23; hour++) { 
     if (.......... conditions TO DO){  
      test.add(1); 
     } 
     else { 
      test.add(0); 
     } 

    } } 

在這種情況下的測試結果的一個例子,我想完成:

測試= [0,0,0,1,0,0,0,0,1,0 ,0,0,0,0,0,0,0,0,1,0,0,0,0]

+1

我會通過重命名這兩個你的方法開始。使用與你的字段名稱相同的方法已經足夠糟糕了 - 有一種方法返回字段的值,另一種方法將新值賦給字段,這兩個方法都被稱爲同一件事,這是一個非常糟糕的想法。接下來,不清楚第一個代碼與問題中的其他內容有什麼關係。請提供[mcve]並儘可能清楚地說明您的問題。 –

+0

將整數的字符串表示與某個字符串進行比較並不算什麼。更有趣的是「爲什麼你需要比較那樣」?我會在心裏重構一下:你在那裏得到了你的數值,用它們作爲索引來填充列表不是比較容易,而不是比較每個列表和所有可能的排列組合嗎? –

+0

另外,返回值是什麼? 「地圖」在哪裏? –

回答

0

您可以使用contains(Object o)方法java.util.List來檢查迭代的int hour包含在List<Integer> var

if (var.contains(hour)){  

注意,hour不是Object,但原始int。自動裝箱會自動轉換爲Integer

的方法是這樣:

@Override 
public Map<String, Object> my() { 
    List<Integer> test = new ArrayList<>(); 
    for (int hour=0; hour<23; hour++) { 
     if (var.contains(hour)){  
      test.add(1); 
     } 
     else { 
      test.add(0); 
     } 

    } 
} 
+0

謝謝你的解決方案 –