2017-04-14 101 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

谢谢你的解决方案 –