適用場景: vaue值不重複場景
在一次項目中要用到根據當前對象的id查詢出當前對象的信息,以及當前對象所在數據庫表中根據名稱排序後的上一個對象以及下一個對象的id值,即:上一個對象id+當前對象信息+下一個對象id 值
結構如圖:
首根據id查詢當前對象的信息直接就能查詢出來,之後就是根據當前id查詢根據名稱排序後之後當前id的前後對象id.
第二步查詢對象所在表的全部id形成一個list
然後將遍歷list,將每個list的值作爲value值存進linkedHashMap中
// 獲取對象id
list中的數據是從數據庫中根據名稱排序查詢出來的
List<Long> list = rgDevLightExtMapper.selectAllCrossId();
int num = 1;
Map<Integer, Long> map = new LinkedHashMap<>();
for (int i = 0; i < list.size(); i++) {
map.put(num, llist.get(i));
num++;
}
// 根據value取key值
Integer key = null;
for (Map.Entry<Integer, Long> m : map.entrySet()) {
if (m.getValue().equals(當前對象Id)) {
key = m.getKey();
}
}
//根據key值取value值 上一個對象id
Long lastId = map.get(key-1);
//根據key值取value值 下一個對象id
Long nextId = map.get(key+1)
最後再將這兩個值一起set進含有當前對象的信息的總對象,然後返回總對象
另外一種方法根據value值取key值
//根據value取key值
public static int getKey(char value)//根據字符得到對應的編碼
{
int key = 0;
Set<Map.Entry<Integer, Character>> set = map.entrySet();
for(Entry<Integer, Character> entry : set){
if(entry.getValue().equals(value)){
key = entry.getKey();
break;
}
}
return key;
}