Java 如何避免数组填充中的重复

Java 如何避免数组填充中的重复,java,arrays,repeat,Java,Arrays,Repeat,我有下一个代码,我想做的是检查数组中是否有值。问题是,我的代码只在我作为参数给出的值和数组中的最后一个值之间进行比较,我要检查的是我是否有这个值,然后返回布尔值true,但我的代码只比较数组中的最后一个值。代码如下: public boolean trueIdTienda(String s) { boolean f = false; for (int x = 0; x < lista.size(); x++) { if (s.equals(ventas.ge

我有下一个代码,我想做的是检查数组中是否有值。问题是,我的代码只在我作为参数给出的值和数组中的最后一个值之间进行比较,我要检查的是我是否有这个值,然后返回布尔值true,但我的代码只比较数组中的最后一个值。代码如下:

public boolean trueIdTienda(String s) {
    boolean f = false;
    for (int x = 0; x < lista.size(); x++) {
        if (s.equals(ventas.getVenta(x).getIdTienda())) {
            f = true;
        } else {
            f = false;
        }
    }
    return f;
}
public boolean trueIdTienda(字符串s){
布尔f=假;
对于(int x=0;x
不需要此部件:

 else {
        f = false;
    }
因为如果其中一个匹配,那么它就是一个匹配,您不需要将其设置回
true
。此外,您还可以在匹配后返回,以将代码速度提高一点(并且更符合逻辑)


如果让
else
部件保持在那里,一旦找到不相等的值,它就会将该值设置回
false
。考虑查找<代码> [1, 2 ] <代码> <代码> 1 <代码>,您将看到。

< P>这部分是不需要的:

 else {
        f = false;
    }
因为如果其中一个匹配,那么它就是一个匹配,您不需要将其设置回
true
。此外,您还可以在匹配后返回,以将代码速度提高一点(并且更符合逻辑)


如果让
else
部件保持在那里,一旦找到不相等的值,它就会将该值设置回
false
。考虑查找<代码>(1, 2)<代码> <代码> 1 <代码>,您将看到。

如果发现值,则可以简化您的函数以立即返回<代码>真< /代码>。
public boolean trueIdTienda(String s) {
    for (int x = 0; x < lista.size(); x++) {
        if (s.equals(ventas.getVenta(x).getIdTienda())) {
            return true;
        }
    }
    return false;
}
public boolean trueIdTienda(字符串s){
对于(int x=0;x
如果找到值,您的函数可以简化为立即返回
true

public boolean trueIdTienda(String s) {
    for (int x = 0; x < lista.size(); x++) {
        if (s.equals(ventas.getVenta(x).getIdTienda())) {
            return true;
        }
    }
    return false;
}
public boolean trueIdTienda(字符串s){
对于(int x=0;x
这是一个经典的搜索算法:

public boolean trueIdTienda(String s) {
    for (int x = 0; x < lista.size(); x++) {
        if (s.equals(ventas.getVenta(x).getIdTienda())){
            return true;
        }
    }
    return false;
}
public boolean trueIdTienda(字符串s){
对于(int x=0;x
这是一个经典的搜索算法:

public boolean trueIdTienda(String s) {
    for (int x = 0; x < lista.size(); x++) {
        if (s.equals(ventas.getVenta(x).getIdTienda())){
            return true;
        }
    }
    return false;
}
public boolean trueIdTienda(字符串s){
对于(int x=0;x
也许你可以使用一个集合。像土豆泥之类的东西应该对你有帮助

也许你可以使用一个集合。像土豆泥之类的东西应该对你有帮助
问题在于,尽管您发现数组中的某个值等于参数,但您将布尔值设置为true,并继续与其他值进行比较,这些值将布尔值返回为false

布尔值的最终值是与最后一个值比较的结果,解决问题的方法是添加
break之后
f=true


尝试理解问题的原因,而不仅仅是使用正确的代码。

问题在于,尽管您发现数组中的值等于参数,但您将布尔值设置为true,并继续与其他值进行比较,这些值将布尔值返回为false

布尔值的最终值是与最后一个值比较的结果,解决问题的方法是添加
break之后
f=true


不要简单地使用正确的代码,试着去理解问题的起因。

@DuncanJones我同意这个答案有点琐碎,但我把OP的问题理解为“为什么这个函数在需要时不喊出一个true”。谢谢,它能工作!!但是做一件事和不做另一件事有什么区别呢?至少这是问题的一个重要方面。代码仅检查最后一项,因为每次都会重置匹配状态。(当然,如果您返回,而不仅仅是设置一个标志,这不会是一个问题……而且代码会更有效。此外。:P但这也会很好地解决问题。)我删除了我以前的评论-我误读了问题,因此误读了您的答案@DuncanJones我同意这个答案有点琐碎,但是我读到OP的问题是“为什么这个函数在需要的时候不喊出一个真的”。谢谢,它能工作!!但是做一件事和不做另一件事有什么区别呢?至少这是问题的一个重要方面。代码仅检查最后一项,因为每次都会重置匹配状态。(当然,如果您返回,而不仅仅是设置一个标志,这不会是一个问题……而且代码会更有效。此外。:P但这也会很好地解决问题。)我删除了我以前的评论-我误读了问题,因此误读了您的答案!如果您想让完全不实用的代码保持活动状态,请将
break
放在
f=true之后
如果你想让你完全不实用的代码保持活力,把
中断
放在
f=true之后谢谢你们所有人…对不起,我不能投票给你们,我的名声不到15个对不起,谢谢大家,所有的答案都在起作用,谢谢大家…对不起,我不能投票给你们,我的名声不到15个对不起,谢谢大家,所有的答案都在起作用我最喜欢这个…我要用这个!谢谢我最喜欢这个…我要用这个!谢谢