【问题标题】:Compare each array string with int将每个数组字符串与 int 进行比较
【发布时间】:2017-09-10 14:40:54
【问题描述】:

你好,如果我想比较这个字符串:

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 1 或 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]

【问题讨论】:

  • 我将从重命名您的两个方法开始。拥有与你的字段同名的方法已经够糟糕了——拥有一个返回字段值的方法和另一个为该字段分配一个new值的方法,两者叫同一个东西,真是个坏主意。接下来,尚不清楚第一个代码与问题中的其他任何内容有什么关系。请提供minimal reproducible example 并尽可能清楚地说明您的问题。
  • 将整数的字符串表示形式与某个字符串进行比较没什么大不了的。更有趣的是“为什么要这样比较”的问题?我会在心跳中重构它:你在那里得到了你的数值,使用它们作为索引来填充列表不是更容易吗?而不是将每个值与所有可能的排列进行比较?
  • 另外,返回值是什么? Map 在哪里?

标签: java string arraylist int


【解决方案1】:

您可以使用java.util.Listcontains(Object o)方法检查int hour是否包含在List&lt;Integer&gt; 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);
        }

    }  
}

【讨论】:

  • 感谢您的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
  • 2022-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多