要求:
1)addrecord(userid, projectid, price)表示使用者userid 給工程 projectid 投標 price。若記錄中有userid 給工程projectid 投標,則不加入該記錄
2)updaterecord(userid, projectid, price)表示更新使用者userid 給工程 projectid 的投標price。若記錄中沒有userid 給工程 projectid的投標,則不更新
3)removerecore(userid, projectid)表示刪除使用者 userid給工程 projectid的投標
4)queryrecord(projectid, price)表示查詢工程projectid中投標金額大於price的結果中,price最小的一條記錄。若大於price的最小price有多條記錄,則返回最早投標的那條記錄。注意:addrecord和updaterecord都會更新記錄的時間。
涉及到的知識點
一、map的實現類hashmap、linkedhashmap、treemap什麼時候使用?
二、treemap中的物件按照key排序、物件按照value排序
// 根據key值降序排序
private
static comparator
comparator =
newcomparator
()else
if(o1 > o2)
else}}
;// 在定義treemap時指定比較器
private
static map
map =
newtreemap
<
>
(comparator)
;
map
resultmap =
newlinkedhashmap
<
>()
;// 自定義比較器,根據entry中的key值公升序排序
private
static comparator
> comparator =
newcomparator
>()
else
if(o1.
getvalue()
> o2.
getvalue()
)else}}
;// 將map轉換為list
list
> list =
newarraylist
<
>
(resultmap.
entryset()
);// 使用collections.sort對list中的物件按照value值進行排序
collections.
sort
(list, comparator)
;// 遍歷取出最小value值對應的key
for(map.entry
三、如果hashmap中的key是物件,如何實現新增key重複的物件?
class
project
@override
public
boolean
equals
(object o)if(
!(o instanceof
project))
project project =
(project) o;
return
getuserid()
== project.
getuserid()
&&getprojectid()
== project.
getprojectid()
;}@override
public
inthashcode()
}
**實現public
class
three
// 儲存記錄
private
static hashmap
record =
newlinkedhashmap
<
>()
;// 定義key物件
static
class
project
// 重寫equals方法
@override
public
boolean
equals
(object o)if(
!(o instanceof
project))
project project =
(project) o;
return
getuserid()
== project.
getuserid()
&&getprojectid()
== project.
getprojectid()
;}@override
public
inthashcode()
public
intgetuserid()
public
void
setuserid
(int userid)
public
intgetprojectid()
public
void
setprojectid
(int projectid)
}public
static
void
addtender
(int userid,
int projectid,
int price)
}public
static
intupdatetender
(int userid,
int projectid,
int price)
return updateresult;
}public
static
intremovetender
(int userid,
int projectid)
return deleteresult;
}// 自定義按value值公升序的比較器
private
static comparator
> comparator =
newcomparator
>()
else
if(o1.
getvalue()
> o2.
getvalue()
)else}}
;public
static
intquerytender
(int projectid,
int price)
else}}
int result =-1
;if(!resultmap.
isempty()
)}return result;
}}
集合的使用
集合的特點 集合是乙個無序的,不重複的陣列組合 1 去重,找出2個列表裡重複的項。把乙個列表變成集合就自動去重了。2 關係測試,測試兩組資料之前的交集 差集 並集等關係 常用操作 set 字串 就把列表轉換成集合。注意集合的大括號組成 像字典,但是不是 這種寫法,是直接把列表變成集合 取集合的交集 ...
集合的使用
優先順序 not and or 從左至右依次計算。and 且 前後都是真的 or 或 有乙個為真 就為真 not 非 取反 同等優先條件下 從左至右依次運算 x and y 如果x為真 則值為y 否則為 x 集合是無序的,不重複的資料集合,他裡面的元素是可雜湊的 不可變型別 但是集合本身是不可雜湊 ...
oracle 集合的使用
每組查詢均能得到其結果集,若需將多個查詢結果合併成乙個結果集,則可利用集合運算來實現。如並集 union 並集且不去除重複行 unoin all 交集 intersect 差集 minus 集合命令的目的是將兩個 含以上 sql語句產生的結果合併。由於需要將兩個 含以上 資料集合並 因此字段數量必須...