我有一个这样的课程:
public static class TiposDeHistorial
{
String CODIGO, TIPO;
public TiposDeHistorial()
{
}
public String getCODIGO()
{
return CODIGO;
}
public void setCODIGO(String CODIGO)
{
this.CODIGO = CODIGO;
}
public String getTIPO()
{
return TIPO;
}
public void setTIPO(String TIPO)
{
this.TIPO = TIPO;
}
}
及其清单:
ArrayList<TiposDeHistorial> tiposHistorial;
所以我的问题是:我可以使用tiposHistorial.contains(...)
来搜索特定的数组字段,例如CODIGO
或TIPO
吗?
答案 0 :(得分:1)
首先,您没有array
而是ArrayList
。
contains
上的List
方法使用equals
方法对其存储的元素(TiposDeHistorial
)进行操作。因此,你的问题的答案是否定的。
尝试tiposHistorial.contains("a")
之类的内容将无效,因为类型不匹配:当您尝试检查TiposDeHistorial
的元素时,您的列表属于String
类型。
答案 1 :(得分:0)
如果您使用的是Java 8,则可以使用以下代码:
org.springframework.remoting.RemoteAccessException: Could not access remote service [rmi://localhost:21303/CaScriptingService]; nested exception is java.rmi.UnmarshalException: Error unmarshaling return; nested exception is:
java.lang.ClassNotFoundException: ENIcallMDC (no security manager: RMI class loader disabled) -- Could not access remote service [rmi://localhost:21303/CaScriptingService]; nested exception is java.rmi.UnmarshalException: Error unmarshaling return; nested exception is:
java.lang.ClassNotFoundException: ENIcallMDC (no security manager: RMI class loader disabled) -- Error unmarshaling return; nested exception is:
java.lang.ClassNotFoundException: ENIcallMDC (no security manager: RMI class loader disabled) -- ENIcallMDC (no security manager: RMI class loader disabled)
java.util.concurrent.ExecutionException: org.springframework.remoting.RemoteAccessException: Could not access remote service [rmi://localhost:21303/CaScriptingService]; nested exception is java.rmi.UnmarshalException: Error unmarshaling return; nested exception is:
java.lang.ClassNotFoundException: ENIcallMDC (no security manager: RMI class loader disabled)
它将返回包含特定CODIGO值的列表中的TiposDeHistorial对象,否则返回null。
关于你的问题:&#34;包含&#34;方法只返回&#34; true&#34;或&#34; false&#34;,而不是对象。此外,它使用&#34; equals&#34;您的对象的方法,因此如果您想使用字段进行搜索,它将无济于事。
答案 2 :(得分:0)
只有当您的对象与ur list元素对象相等时,Contains方法才会返回true。 您可以尝试扩展equals方法,并拥有适用于CODIGO或TIPO的自己的标准。
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
test other = (test) obj;
if (CODIGO == null) {
if (other.CODIGO != null)
return false;
} else if (!CODIGO.equals(other.CODIGO))
return false;
return true;
}
答案 3 :(得分:0)
这里给出的答案都是正确的,只要你不知道java流,并想检查列表是否包含一些CODIGO和TIPO字段,对我来说最简单的解决方案是:
ArrayList<TiposDeHistorial> tiposHistorial = new ArrayList<>();
//add elements to the list
String tipo = "TIPO"; // the TIPO value You are looking for in the list
String codigo = "CODIGO"; // the CODIGO value You are looking for in the list
boolean containsTipo = false;
boolean containsCodigo = false;
for (TiposDeHistorial element: tiposHistorial) {
if (!containsTipo && element.getTIPO().equals(tipo)) {
containsTipo = true;
}
if (!containsCodigo && element.getCODIGO().equals(codigo) ){
containsCodigo = true;
}
if (containsTipo && containsCodigo)
break;
}
通过稍微编辑它,你也可以找到数组的哪些元素包含你正在寻找的值,如果这是你的意图