亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java使用list實現數據庫的like功能

2019-11-26 15:34:05
字體:
來源:轉載
供稿:網友

使用list實現類似數據庫的like,between,精確查找方法

復制代碼 代碼如下:

public final class CommonLocalQuery<T extends Map<String, Object>> {

 //傳入數據查詢后返回list, 第一個參數:被查詢列表,第二個參數:查詢條件
 public List<T> queryData(final List<T> mAllList, final HashHashMap<POLICY, String, String> map) {

  if(mAllList == null | map == null) {
   return new ArrayList<T>();
  }

  if(mAllList.isEmpty()) {
   return mAllList;
  }

  /* 根據實際需要找出符合的查詢條件 */
  Set<POLICY> key1 = map.getFirstKeys();
  for (POLICY policy : key1) {
   ConcurrentHashMap<String, String> tempMap = map.get(policy);
   Set<String> key2 = tempMap.keySet();
   for (String key : key2) {
    if(key.startsWith("-") || tempMap.get(key) == null ||
      (tempMap.get(key) != null && tempMap.get(key).equals(""))) {
     tempMap.remove(key);
    }
   }
  }
// 責任鏈設計模式進行查找
  Filter filterNormal, filterBetween, filterFuzzy;
  filterNormal = new FilterNormal();
  filterBetween = new FilterBetween();
  filterFuzzy = new FilterFuzzy();
  filterNormal.setFilter(filterBetween);
  filterBetween.setFilter(filterFuzzy);
  Set<POLICY> endKey1 = map.getFirstKeys();
  List<T> listResult = new ArrayList<T>();
  for (T resMap : mAllList) {
   for (POLICY policy : endKey1) {
    ConcurrentHashMap<String, String> queryMap = map.get(policy);
    if (filterNormal.doFilter(resMap, policy, queryMap) && listResult.contains(resMap)) {
     listResult.add(resMap);
    }
   }
  }
  return listResult;
 }

 public static enum POLICY { NORMAL, BETWEEN, FUZZY }
}

/*======== 責任鏈抽象類 ======*/
abstract class Filter {

 Filter filter;

 public void setFilter(Filter filter) {
  this.filter = filter;
 }

 public Filter getFilter() {
  return filter;
 }

 abstract boolean doFilter(Map<String, Object> resMap, POLICY policy, Map<String, String> queryMap);
}
//精確查找方式
class FilterNormal extends Filter {

 @Override
 boolean doFilter(Map<String, Object> resMap, POLICY policy, Map<String, String> queryMap) {
  // TODO Auto-generated method stub
  if (policy.name().equalsIgnoreCase(POLICY.NORMAL.name())) {
   Iterator<Entry<String, String>> iterator = queryMap.entrySet().iterator();
   while(iterator.hasNext()) {
    Entry<String, String> entry = iterator.next();
    if(!resMap.get(entry.getKey()).toString().contains(entry.getValue())) {
     return false;
    }
   }
  } else if (filter != null) {
   return filter.doFilter(resMap, policy, queryMap);
  }
  return true;
 }
}
//between查找方式
class FilterBetween extends Filter {

 @Override
 boolean doFilter(Map<String, Object> resMap, POLICY policy, Map<String, String> queryMap) {
  // TODO Auto-generated method stub
  if (policy.name().equalsIgnoreCase(POLICY.BETWEEN.name())) {
   Iterator<Entry<String, String>> iterator = queryMap.entrySet().iterator();
   while(iterator.hasNext()) {
    Entry<String, String> entry = iterator.next();
    if(!Pattern.matches(".+?Φ.+?", entry.getValue()))
     throw new UnknownError("Values should be .+?Φ.+? pattern");
    String firstValue = entry.getValue().split("Φ")[0];
    String secondValue = entry.getValue().split("Φ")[1];
    if(resMap.get(entry.getKey()).toString().compareTo(firstValue) < 0
      || resMap.get(entry.getKey()).toString().compareTo(secondValue) > 0) {
     return false;
    }
   }
  } else if (filter != null) {
   return filter.doFilter(resMap, policy, queryMap);
  }
  return true;
 }
}
//模糊查找方式
class FilterFuzzy extends Filter {

 @Override
 boolean doFilter(Map<String, Object> resMap, POLICY policy, Map<String, String> queryMap) {
  // TODO Auto-generated method stub
  if (policy.name().equalsIgnoreCase(POLICY.FUZZY.name())) {
   String tempStr = resMap.values().toString().replace(" ", "").replace(",", "");
   Iterator<Entry<String, String>> iterator = queryMap.entrySet().iterator();
   while(iterator.hasNext()) {
    Entry<String, String> entry = iterator.next();
    if(tempStr.substring(1, tempStr.length()-1).contains(entry.getValue())) {
     return true;
    }
   }
  } else if (filter != null) {
   return filter.doFilter(resMap, policy, queryMap);
  }
  return true;
 }
}


//幫助類實現 k1-k2-v
public class HashHashMap<K1, K2, V> {

    private ConcurrentHashMap<K1, ConcurrentHashMap<K2, V>> k1k2vMap;

    public HashHashMap() {
        this.k1k2vMap = new ConcurrentHashMap<K1, ConcurrentHashMap<K2, V>>();
    }

    public void put(K1 key1, K2 key2, V value) {
        if (k1k2vMap.containsKey(key1)) {
            ConcurrentHashMap<K2, V> k2vMap = k1k2vMap.get(key1);
            k2vMap.put(key2, value);
        } else {
            ConcurrentHashMap<K2, V> k2vMap = new ConcurrentHashMap<K2, V>();
            k2vMap.put(key2, value);
            k1k2vMap.put(key1, k2vMap);
        }
    }

    public Set<K1> getFirstKeys() {
        return k1k2vMap.keySet();
    }

    public V get(K1 key1, K2 key2) {
        ConcurrentHashMap<K2, V> k2_v = k1k2vMap.get(key1);
        return k2_v == null ? null : k2_v.get(key2);
    }

    public ConcurrentHashMap<K2, V> get(K1 key1) {
        return k1k2vMap.get(key1);
    }

    public boolean containsKey(K1 key1, K2 key2) {
        if (k1k2vMap.containsKey(key1)) {
            return k1k2vMap.get(key1).containsKey(key2);
        }
        return false;
    }

    public boolean containsKey(K1 key1) {
        return k1k2vMap.containsKey(key1);
    }

    public void clear() {
        if (k1k2vMap.size() > 0) {
            for (ConcurrentHashMap<K2, V> k2vMap : k1k2vMap.values()) {
                k2vMap.clear();
            }
            k1k2vMap.clear();
        }
    }
}

//具體使用方式
HashHashMap<POLICY, String, String> map = new HashHashMap<CommonLocalQuery.POLICY, String, String>();
  for(int i = 0; i < queryKey.length; i++){
   map.put(POLICY.NORMAL, queryKey[i], queryValue[i]);
  }
List<Map<String, Object>> mTempList = new CommonLocalQuery<HashMap<String, Object>>(

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品自在久久| 97久久精品在线| 亚洲精品动漫久久久久| 久久电影一区二区| 欧美成人剧情片在线观看| 成人欧美一区二区三区在线湿哒哒| 国产91色在线播放| 亚洲a级在线观看| 中文字幕日韩av综合精品| 国产精品高潮视频| 日本久久久久久久久| 国产欧美va欧美va香蕉在线| 国产偷国产偷亚洲清高网站| 久热精品视频在线| 91久久久久久久一区二区| 午夜精品国产精品大乳美女| 精品国产91久久久久久老师| 欧美区二区三区| 97精品国产97久久久久久免费| 欧美综合在线第二页| 亚洲天堂免费观看| 亚洲人成在线观看| 亚洲综合在线小说| 成人有码视频在线播放| 亚洲成人动漫在线播放| 国产精品久久久久不卡| 亚洲国产另类久久精品| 久久成人国产精品| 精品国产福利视频| 国产精品夫妻激情| 日韩av电影中文字幕| 欧美丰满少妇xxxxx| 国产精品爽黄69| 92福利视频午夜1000合集在线观看| 日韩欧美在线观看| 国产不卡一区二区在线播放| 永久免费毛片在线播放不卡| 欧美成人精品激情在线观看| 成人免费在线网址| 久久久久久久久久久久久久久久久久av| 日韩av网址在线观看| 亚洲第一页在线| 色综合老司机第九色激情| 国产在线视频2019最新视频| 久久精品成人一区二区三区| 欧美第一黄网免费网站| 97在线观看免费高清| 红桃av永久久久| 日韩av中文字幕在线免费观看| 亚洲国产精品专区久久| 亚洲视频网站在线观看| 久久综合国产精品台湾中文娱乐网| 亚洲人成电影在线观看天堂色| 2019亚洲日韩新视频| 亚洲精品成人久久| 国产精品美女久久久免费| 久久久久久美女| 另类天堂视频在线观看| 91免费看视频.| 国产成人精品视频在线| 欧美黑人一级爽快片淫片高清| 亚洲女成人图区| xxx一区二区| 欧美一级视频在线观看| 最近2019中文字幕第三页视频| 欧美性极品xxxx做受| 国产精品久久77777| 国产福利精品av综合导导航| 91精品久久久久| 国产高清视频一区三区| 国产经典一区二区| 国产精品视频自拍| 亚洲女性裸体视频| 奇门遁甲1982国语版免费观看高清| 欧美中文字幕第一页| 日韩在线免费观看视频| 国产第一区电影| 国产做受69高潮| 欧美日韩中文字幕在线视频| 欧美男插女视频| 日本在线精品视频| 日韩欧美在线国产| 欧美亚洲在线视频| 精品久久久久久久久中文字幕| 国产精品三级久久久久久电影| 国产婷婷97碰碰久久人人蜜臀| 亚洲国产97在线精品一区| 少妇av一区二区三区| 久久精品免费播放| 亚洲午夜激情免费视频| 日韩av电影在线播放| 日韩av手机在线看| 久久久久久久爱| 久久亚洲私人国产精品va| 日韩视频免费大全中文字幕| 精品国产依人香蕉在线精品| 亚洲人成电影网站色xx| 亚洲欧美日韩成人| 精品国产一区二区三区久久久狼| 国产精品久久电影观看| 亚洲一区二区自拍| 日韩久久免费电影| 欧美中文字幕精品| 亚洲国产欧美日韩精品| 欧美又大粗又爽又黄大片视频| 日韩精品在线观看视频| 国外成人在线播放| 欧美美最猛性xxxxxx| 国产精品自产拍高潮在线观看| 日韩av中文在线| 日韩美女免费观看| 日韩欧美国产一区二区| 久久九九精品99国产精品| 国外日韩电影在线观看| 奇米4444一区二区三区| 成人av色在线观看| 亚洲国产精品成人va在线观看| 一区二区亚洲欧洲国产日韩| 91免费高清视频| 国产精品18久久久久久麻辣| 精品亚洲夜色av98在线观看| 欧美中文字幕在线视频| 国产91精品黑色丝袜高跟鞋| 欧美成人久久久| 一本大道久久加勒比香蕉| 欧美影院成年免费版| 亚洲精品久久久久国产| 亚洲国产成人精品女人久久久| 欧美精品激情视频| 久久久这里只有精品视频| 日韩黄色高清视频| 在线观看国产精品淫| 国产91精品久久久久| 日韩精品极品在线观看播放免费视频| 国产精自产拍久久久久久蜜| 久久精品国产99国产精品澳门| 欧美激情免费在线| 91成人在线播放| 亚洲一区二区三区久久| 久久人人爽人人爽爽久久| 国产精品日韩久久久久| 亚洲激情小视频| 亚洲加勒比久久88色综合| 色噜噜亚洲精品中文字幕| 亚洲精品一区二三区不卡| 91极品女神在线| 国产精品电影网站| 97精品视频在线| 国产在线98福利播放视频| 国产精品91在线| 欧美乱妇40p| 欧美网站在线观看| 亚洲天堂影视av| 青青精品视频播放| 日韩精品在线免费观看| 亚洲午夜性刺激影院| 国产中文欧美精品| 欧洲午夜精品久久久| 亚洲成人免费网站| 久久久免费观看| 国产性色av一区二区| 久久久国产视频91| 色偷偷偷亚洲综合网另类| 国产成人av在线播放|