San*_*adi 16 java collections conditional hashset where-in
我有多个条件要检查,如下所示,
if(pouch.getStatus().equals("Finalized") || pouch.getStatus().equals("Ready")
|| pouch.getStatus().equals("Checkout") || pouch.getStatus().equals("Confirmed")
|| pouch.getStatus().equals("Book") || pouch.getStatus().equals("Started")
|| pouch.getStatus().equals("Inital") || pouch.getStatus().equals("Close")) {
// Body
}
Run Code Online (Sandbox Code Playgroud)
是否有任何简单的方法来检查类似SQL IN条件的上述条件,以便代码看起来更简单?
D-S*_*hih 13
我们来看看SQL in功能
SQL WHERE
IN返回与列表中的值匹配的值
所以我会使用一个集合,它实现from Collection<E>并包含方法,使if语句更简单.
contains(Object o)如果此set包含指定的元素,则返回true.
contains效果与SQL非常相似in.
1.在集合中添加多个条件,从中实现 Collection<E>
Set<String> dict = new HashSet<String>();
dict.add("Finalized");
dict.add("Ready");
dict.add("Checkout");
dict.add("Confirmed");
dict.add("Book");
dict.add("Started");
dict.add("Inital");
dict.add("Close");
Run Code Online (Sandbox Code Playgroud)
2. contains检查输入值是否存在于集合中.
if (dict.contains(pouch.getStatus()))
{
// do your logic
}
Run Code Online (Sandbox Code Playgroud)
您可以使用课堂matches上提供的方法String,
if(pouch.getStatus().matches("Finalized|Ready|Checkout|Confirmed|Book|Started|Inital|Close")){
//your implementation goes here
}
Run Code Online (Sandbox Code Playgroud)
List<String> listOfInputs = new ArrayList<String>();
// add elements in listOfInputs...
boolean isAvailable = listOfInputs.contains(pouch.getStatus());
Run Code Online (Sandbox Code Playgroud)
小智 5
SQL IN可能会返回多个结果,但在您的问题中,如果满足一个条件,则操作将终止并返回.
您可以创建一个枚举来保存所有条件,如下所示.
假设您的Pouch类是这样的.
public class Pouch {
private final String status;
public Pouch(final String status) {
this.status = status;
}
public String getStatus() {
return status;
}
}
Run Code Online (Sandbox Code Playgroud)
这是你的包含状态的枚举.
public enum PouchEnum {
Finalized, Ready, Checkout, Confirmed, Book, Started, Inital, Close
}
Run Code Online (Sandbox Code Playgroud)
并检查您的状况,如下所示.
if (PouchEnum.valueOf(pouch.getStatus()) != null) {
// Do some stuff
}
Run Code Online (Sandbox Code Playgroud)
为了使它更干净,你可以使用apache commons-lang3中的EnumUtils,这样可以使代码检查更加清晰,如下所示.
if (EnumUtils.isValidEnum(PouchEnum.class, pouch.getStatus())) {
// Do some stuff
}
Run Code Online (Sandbox Code Playgroud)
我希望这将有助于您的代码更清洁.
| 归档时间: |
|
| 查看次数: |
487 次 |
| 最近记录: |