1.數組把對象和數字形式的下標聯(lián)系起來。它持有的是類型確定的對象,這樣提取對象的時候就不用再作類型傳遞了。它可以是多維的,也可以持有primitive。但是創(chuàng)建之后它的容量不能改了。
成都創(chuàng)新互聯(lián)專注于鳳縣企業(yè)網站建設,響應式網站建設,商城開發(fā)。鳳縣網站建設公司,為鳳縣等地區(qū)提供建站服務。全流程定制制作,專業(yè)設計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務
2.Collection持有單個元素,而Map持有相關聯(lián)的pair。
3.和數組一樣,List也把數字下標同對象聯(lián)系起來,你可以把數組和List想成有序的容器。List會隨元素的增加自動調整容量。但是List只能持有Objectreference,所以不能存放primitive,而且把Object提取出來之后,還要做類型傳遞。
4.如果要做很多隨機訪問,那么請用ArrayList,但是如果要再List的中間做很多插入和刪除的話,就應該用LinkedList了。
5.LinkedList能提供隊列,雙向隊列和棧的功能。
6.Map提供的不是對象與數組的關聯(lián),而是對象和對象的關聯(lián)。
HashMap看重的是訪問速度,而TreeMap看重鍵的順序,因而它不如HashMap那么快。而LinkedHashMap則保持對象插入的順序,但是也可以用LRU算法為它重新排序。
7.Set只接受不重復的對象。HashSet提供了最快的查詢速度。而TreeSet則保持元素有序。LinkedHashSet保持元素的插入順序。
8.沒必要再在新代碼里使用舊類庫留下來的Vector,Hashtable和Stack了。
容器類庫是你每天都會用到的工具,它能使程序更簡潔,更強大并且更高效。
隨著Java的進一步完善,它的功能和易用性也得到提高,我有理由相信Java在計算機語言中所占的位置也會更加牢固,讓喜愛Java的人更加喜愛它。祝愿Java一路順風!
因為HashMap一次次添加在對象內部并不是按照先后順序添加的,我給你說說結果:
當只加第一個映射時,HashMap的打印結果是:
關鍵代碼:
aa.put("1","java");
System.out.println(aa) ;
結果:
{1=java}
第二次:
aa.put("1","java");
aa.put("2","VB");
System.out.println(aa) ;
結果:
{2=VB, 1=java}
第三次:
aa.put("1","java");
aa.put("2","VB");
aa.put("3","VC++");
結果:
{3=VC++, 2=VB, 1=java}
第四次:
aa.put("1","java");
aa.put("2","VB");
aa.put("3","VC++");
aa.put("4","c++");
結果:
{3=VC++, 2=VB, 4=c++, 1=java}
第五次:
aa.put("1","java");
aa.put("2","VB");
aa.put("3","VC++");
aa.put("4","c++");
aa.put( "5","c");
結果:
{3=VC++, 5=c, 2=VB, 4=c++, 1=java}
第六次:
aa.put("1","java");
aa.put("2","VB");
aa.put("3","VC++");
aa.put("4","c++");
aa.put( "5","c");
aa.put( "6","basic");
結果:
{3=VC++, 5=c, 2=VB, 4=c++, 6=basic, 1=java}
第七次:
aa.put("1","java");
aa.put("2","VB");
aa.put("3","VC++");
aa.put("4","c++");
aa.put( "5","c");
aa.put( "6","basic");
aa.put( "7","Jscript");
結果:
{3=VC++, 5=c, 7=Jscript, 2=VB, 4=c++, 6=basic, 1=java}
由以上結果我們可以看出來,在HashMap里,添加順序并不是按從前向后的順序添加的,也不是按從后向前添加的,在HashMap的文擋幫助里有這么一句話:"此類不保證映射的順序,特別是它不保證該順序恒久不變。",如果你又想用Map又想保持順序,可以使用LinkedHashMap,它和HashMap一樣,但是可以保證插入順序,但是這樣也增加了一點點開銷.
根據你上面的提示和程序里的要求,修改了Database,新增了衣服的方法。每次計算的價格可以寫成共通方法。希望其他人有好的建議也發(fā)上來。
import java.util.HashMap;
import java.util.Map;
public class Database {
private MapInteger, McBean data = new HashMapInteger, McBean();
public Database(){
McBean bean = new McBean();
bean.setNid(1);
bean.setSname("地瓜");
bean.setNprice(2.0);
bean.setSdescription("新鮮的地瓜");
data.put(1, bean);
bean = new McBean();
bean.setNid(2);
bean.setSname("土豆");
bean.setNprice(1.2);
bean.setSdescription("又好又大的土豆");
data.put(2, bean);
bean = new McBean();
bean.setNid(3);
bean.setSname("絲瓜");
bean.setNprice(1.5);
bean.setSdescription("本地絲瓜");
data.put(3, bean);
bean = new McBean();
bean.setNid(4);
bean.setSname("衣服");
bean.setNprice(30);
bean.setSdescription("衣服");
data.put(4, bean);
}
public McBean getMcBean(int nid){
return data.get(nid);
}
}
public class McBean {
private Integer nid; //商品編號
private String sname; //名稱
private double nprice; //價格
private String sdescription; //描述
public Integer getNid() {
return nid;
}
public void setNid(Integer nid) {
this.nid = nid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public double getNprice() {
return nprice;
}
public void setNprice(double nprice) {
this.nprice = nprice;
}
public String getSdescription() {
return sdescription;
}
public void setSdescription(String sdescription) {
this.sdescription = sdescription;
}
}
public class OrderItemBean {
private McBean mcbean; //商品
private int count; //商品數量
public McBean getMcbean() {
return mcbean;
}
public void setMcbean(McBean mcbean) {
this.mcbean = mcbean;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class ShoppingCar {
private double totalPrice; //購物車所有商品總價格
private int totalCount; //購物車所有商品數量
private MapInteger,OrderItemBean itemMap; //商品編號與訂單項的鍵值對
public ShoppingCar(){
//初始化購物車
itemMap = new HashMapInteger, OrderItemBean();
Database db = new Database();
McBean bean = new McBean();
OrderItemBean orderItem1 = new OrderItemBean();
OrderItemBean orderItem2 = new OrderItemBean();
OrderItemBean orderItem3 = new OrderItemBean();
bean = db.getMcBean(1);
orderItem1.setMcbean(bean);
orderItem1.setCount(2);
bean = db.getMcBean(2);
orderItem2.setMcbean(bean);
orderItem2.setCount(5);
bean = db.getMcBean(4);
orderItem3.setMcbean(bean);
orderItem3.setCount(3);
itemMap.put(1, orderItem1);
itemMap.put(2, orderItem2);
itemMap.put(4, orderItem3);
totalCount = itemMap.size();
totalPrice = 0;
Set set = itemMap.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.EntryInteger, OrderItemBean entry1=(Map.EntryInteger, OrderItemBean)i.next();
totalPrice += entry1.getValue().getCount() * entry1.getValue().getMcbean().getNprice();
}
}
public void buy(int nid){
//如果該商品是第一次購買,商品的信息從數據庫獲取,數據庫的模擬代
//碼見附錄。itemMap增加一對鍵值對。
//如果不是第一次購買,則通過商品編號找到對應的定單項,然后更新定
//單項的商品數量。
//不管是否第一次購買,都得更新購物車的總價格和總數量。
Database db = new Database();
McBean mcBean = new McBean();
OrderItemBean orderItem = new OrderItemBean();
if(itemMap.get(nid) == null) {
mcBean = db.getMcBean(nid);
orderItem.setMcbean(mcBean);
orderItem.setCount(1);
itemMap.put(nid, orderItem);
} else {
orderItem = itemMap.get(nid);
orderItem.setCount(orderItem.getCount() + 1);
}
totalCount = itemMap.size();
totalPrice = 0;
Set set = itemMap.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.EntryInteger, OrderItemBean entry1=(Map.EntryInteger, OrderItemBean)i.next();
totalPrice += entry1.getValue().getCount() * entry1.getValue().getMcbean().getNprice();
}
}
public void delete(int nid){
//通過商品編號刪除的對應的定單項,然后從更新購物車的總價格和總數量。
itemMap.remove(nid);
totalCount = itemMap.size();
totalPrice = 0;
Set set = itemMap.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.EntryInteger, OrderItemBean entry1=(Map.EntryInteger, OrderItemBean)i.next();
totalPrice += entry1.getValue().getCount() * entry1.getValue().getMcbean().getNprice();
}
}
public void update(int nid, int count){
///通過商品編號找到對應的對應的定單項,修改商品數量。然后從更新購物車的總價格和總數量。
OrderItemBean orderItem = new OrderItemBean();
orderItem = itemMap.get(nid);
orderItem.setCount(count);
totalCount = itemMap.size();
totalPrice = 0;
Set set = itemMap.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.EntryInteger, OrderItemBean entry1=(Map.EntryInteger, OrderItemBean)i.next();
totalPrice += entry1.getValue().getCount() * entry1.getValue().getMcbean().getNprice();
}
}
public void clear(){
//清空定單項,購物車的總價格和總數量清零。
itemMap.clear();
totalCount = 0;
totalPrice = 0;
}
public void show(){
//顯示購物車的商品,格式如下:
//商品編號 商品名稱 單價 購買數量 總價
//1 地瓜 2.0 2 4.0
//2 衣服 30 5 150
//…
//合計:總數量:5 總價格:20元
System.out.println("商品編號" + " " + "商品名稱" + " " + "單價" + " " + "購買數量" + " " + "總價" );
Set set = itemMap.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.EntryInteger, OrderItemBean entry1=(Map.EntryInteger, OrderItemBean)i.next();
int nid = entry1.getKey();
String name = entry1.getValue().getMcbean().getSname();
double price = entry1.getValue().getMcbean().getNprice();
int count = entry1.getValue().getCount();
double totalprice = price * count;
System.out.println(nid + " "+ name + " " + price + " " + count + " " + totalprice);
}
System.out.println("合計:總數量:" + totalCount + " 總價格:" + totalPrice+ "元");
}
public static void main(String[] args) {
ShoppingCar shoppingCar = new ShoppingCar();
shoppingCar.show();
System.out.println("--------------------------------");
shoppingCar.buy(3);
shoppingCar.show();
System.out.println("--------------------------------");
shoppingCar.update(4, 2);
shoppingCar.show();
System.out.println("--------------------------------");
shoppingCar.delete(2);
shoppingCar.show();
System.out.println("--------------------------------");
shoppingCar.clear();
shoppingCar.show();
}
}
運行結果:
商品編號 商品名稱 單價 購買數量 總價
1 地瓜 2.0 2 4.0
2 土豆 1.2 5 6.0
4 衣服 30.0 3 90.0
合計:總數量:3 總價格:100.0元
--------------------------------
商品編號 商品名稱 單價 購買數量 總價
1 地瓜 2.0 2 4.0
2 土豆 1.2 5 6.0
3 絲瓜 1.5 1 1.5
4 衣服 30.0 3 90.0
合計:總數量:4 總價格:101.5元
--------------------------------
商品編號 商品名稱 單價 購買數量 總價
1 地瓜 2.0 2 4.0
2 土豆 1.2 5 6.0
3 絲瓜 1.5 1 1.5
4 衣服 30.0 2 60.0
合計:總數量:4 總價格:71.5元
--------------------------------
商品編號 商品名稱 單價 購買數量 總價
1 地瓜 2.0 2 4.0
3 絲瓜 1.5 1 1.5
4 衣服 30.0 2 60.0
合計:總數量:3 總價格:65.5元
--------------------------------
商品編號 商品名稱 單價 購買數量 總價
合計:總數量:0 總價格:0.0元
Java平臺提供了一個全新的集合框架?!凹峡蚣堋敝饕梢唤M用來操作對象的接口組成。不同接口描述一組不同數據類型。
Java 2集合框架圖
集合接口:6個接口(短虛線表示),表示不同集合類型,是集合框架的基礎。
抽象類:5個抽象類(長虛線表示),對集合接口的部分實現??蓴U展為自定義集合類。
實現類:8個實現類(實線表示),對接口的具體實現。
在很大程度上,一旦您理解了接口,您就理解了框架。雖然您總要創(chuàng)建接口特定的實現,但訪問實際集合的方法應該限制在接口方法的使用上;因此,允許您更改基本的數據結構而不必改變其它代碼。
· Collection 接口是一組允許重復的對象。
· Set 接口繼承 Collection,但不允許重復,使用自己內部的一個排列機制。
· List 接口繼承 Collection,允許重復,以元素安插的次序來放置元素,不會重新排列。
· Map接口是一組成對的鍵-值對象,即所持有的是key-value pairs。Map中不能有重復的key。擁有自己的內部排列機制。
· 容器中的元素類型都為Object。從容器取得元素時,必須把它轉換成原來的類型。
Java 2簡化集合框架圖
集合接口
1.Collection 接口
用于表示任何對象或元素組。想要盡可能以常規(guī)方式處理一組元素時,就使用這一接口。
(1) 單元素添加、刪除操作:
boolean add(Object o):將對象添加給集合
boolean remove(Object o): 如果集合中有與o相匹配的對象,則刪除對象o
(2) 查詢操作:
int size() :返回當前集合中元素的數量
boolean isEmpty() :判斷集合中是否有任何元素
boolean contains(Object o) :查找集合中是否含有對象o
Iterator iterator() :返回一個迭代器,用來訪問集合中的各個元素
(3) 組操作 :作用于元素組或整個集合
boolean containsAll(Collection c): 查找集合中是否含有集合c 中所有元素
boolean addAll(Collection c) : 將集合c 中所有元素添加給該集合
void clear(): 刪除集合中所有元素
void removeAll(Collection c) : 從集合中刪除集合c 中的所有元素
void retainAll(Collection c) : 從集合中刪除集合c 中不包含的元素
(4) Collection轉換為Object數組 :
Object[] toArray() :返回一個內含集合所有元素的array
Object[] toArray(Object[] a) :返回一個內含集合所有元素的array。運行期返回的array和參數a的型別相同,需要轉換為正確型別。
文章標題:java集合框架代碼 集合框架類
網頁路徑:http://muchs.cn/article4/docsdie.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站設計公司、企業(yè)網站制作、移動網站建設、做網站、、品牌網站設計
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)