我是java新手,我想用java中的Map优化我的代码。当我编写我的代码时,我使用了很多if else语句,所以我希望在实现map时使用地图收集框架来减少代码,但结果并不准确。我的功能完全没用。这是我的密码。
private List<Item> getBussinessSearchItem(IteamSearch itemSearch, byte searchType,int size, int offSet){
StringBuilder queryBuilder - new StringBuilder();
if(itemSearch.getOrigin()!=null && (checkOriginDomain(itemSearch.getOrigin))) {
if(itemSearch.getSort().equalsIgnoreCase("name")) {
if(itemSearch.getSortOrder() == 1) {
queryBuilder.append("ORDDER BY Name ASc");
}else {
queryBuilder.append("ORDDER BY Name ASc");
}
}else if(itemSearch.getSort().equalsIgnoreCase("upc1")) {
if(itemSearch.getSortOrder() == 1) {
queryBuilder.append("ORDDER BY upc1 ASc");
}else {
queryBuilder.append("ORDDER BY upc1 ASc");
}
}
else if(itemSearch.getSort().equalsIgnoreCase("minQuantiy")) {
if(itemSearch.getSortOrder() == 1) {
queryBuilder.append("ORDDER BY minQuantiy ASc");
}else {
queryBuilder.append("ORDDER BY minQuantiy ASc");
}
}
}当我使用上述语句时,它可以正常工作,并按照升序和DESCINDING顺序对结果进行适当排序。但是我不想实现上面的语句,我想实现map,而该映射的工作原理与上面的语句相同。这是我的代码,但下面的代码不起作用
private Map<String , String> getBussinessSearchItem(ItemSearch itemSearch){
Map<Srring,String> newMap = new HashMap<>();
itemSearch.getSort().equalsIgnoreCase("name");
itemSearch.getSort().equalsIgnoreCase("upc1");
itemSearch.getSort().equalsIgnoreCase("minQuantiy");
}我不知道如何实现map而不是if of语句。我想用地图或枚举来解决这个问题。
我的ItemSerach表包含名称、upc1、minquantity
发布于 2022-11-27 10:39:26
如果将排序选项移动到单独的类ItemSearchOrder类中,该类正确地实现了equals和hashCode,则可以将其直接用作映射中的键:
class ItemSearchOrder {
private final String sort;
private final int order;
public ItemSearchOrder(final String sort, final int order) {
this.sort = Objects.requireNonNull(sort);
this.order = order;
}
public static ItemSearchOrder asc(final String sort) {
return new ItemSearchOrder(sort, 1);
}
public static ItemSearchOrder desc(final String sort) {
return new ItemSearchOrder(sort, 0);
}
@Override
public boolean equals(final Object other) {
if (other == null) return false;
if (other == this) return true;
if (other.getClass() != this.getClass()) return false;
return this.order == other.order
&& this.sort.equalsIgnoreCase(other.sort);
}
@Override
public int hashCode() {
return Objects.hash(sort, order);
}
}然后建立你的地图:
final Map<ItemSearchOrder, String> sortQueries = Map.ofEntries(
Map.entry(ItemSearchOrder.asc("name")), "ORDER BY name ASC"),
Map.entry(ItemSearchOrder.desc("name")), "ORDER BY name DESC"),
Map.entry(ItemSearchOrder.asc("upc1")), "ORDER BY upc1 ASC"),
...
);然后使用它查找正确的ORDER BY子句:
public List<Item> getBussinessSearchItem(
final IteamSearch itemSearch, ...) {
final String sort = sortQueries.get(itemSearch.getOrder());
if (sort == null) {
// unknown sort
}
// ...
}https://stackoverflow.com/questions/74589230
复制相似问题