真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

javamap實(shí)現(xiàn)代碼 java mapisempty

java Map 怎么遍歷

關(guān)于java中遍歷map具體有四種方式,請(qǐng)看下文詳解。

創(chuàng)新互聯(lián)建站成立以來(lái)不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶需求中心、市場(chǎng)為導(dǎo)向”的快速反應(yīng)體系。對(duì)公司的主營(yíng)項(xiàng)目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計(jì)、行業(yè) / 企業(yè)門(mén)戶設(shè)計(jì)推廣、行業(yè)門(mén)戶平臺(tái)運(yùn)營(yíng)、APP應(yīng)用開(kāi)發(fā)成都手機(jī)網(wǎng)站制作、微信網(wǎng)站制作、軟件開(kāi)發(fā)、鄭州服務(wù)器托管等實(shí)行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)建站可以獲得的服務(wù)效果。

1、這是最常見(jiàn)的并且在大多數(shù)情況下也是最可取的遍歷方式,在鍵值都需要時(shí)使用。

MapInteger, Integer map = new?HashMapInteger, Integer();

for?(Map.EntryInteger, Integer entry : map.entrySet()) {

System.out.println("Key = "?+ entry.getKey() + ", Value = "?+ entry.getValue());

}

2、在for-each循環(huán)中遍歷keys或values。

如果只需要map中的鍵或者值,你可以通過(guò)keySet或values來(lái)實(shí)現(xiàn)遍歷,而不是用entrySet。

MapInteger, Integer map = new?HashMapInteger, Integer();

for?(Integer key : map.keySet()) {

System.out.println("Key = "?+ key);

}

for?(Integer value : map.values()) {

System.out.println("Value = "?+ value);

}

該方法比entrySet遍歷在性能上稍好(快了10%),而且代碼更加干凈。

3、使用Iterator遍歷

使用泛型:

MapInteger, Integer map = new?HashMapInteger, Integer();

IteratorMap.EntryInteger, Integer entries = map.entrySet().iterator();

while?(entries.hasNext()) {

Map.EntryInteger, Integer entry = entries.next();

System.out.println("Key = "?+ entry.getKey() + ", Value = "?+ entry.getValue());

}

不使用泛型:

Map map = new?HashMap();

Iterator entries = map.entrySet().iterator();

while?(entries.hasNext()) {

Map.Entry entry = (Map.Entry) entries.next();

Integer key = (Integer)entry.getKey();

Integer value = (Integer)entry.getValue();

System.out.println("Key = "?+ key + ", Value = "?+ value);

}

4、通過(guò)鍵找值遍歷(效率低)

MapInteger, Integer map = new?HashMapInteger, Integer();

for?(Integer key : map.keySet()) {

Integer value = map.get(key);

System.out.println("Key = "?+ key + ", Value = "?+ value);

}

假設(shè)Map中的鍵值對(duì)為1=11,2=22,3=33,現(xiàn)用方法1來(lái)遍歷Map代碼和調(diào)試結(jié)果如下:

擴(kuò)展資料:

1、HashMap的重要參數(shù)

HashMap 的實(shí)例有兩個(gè)參數(shù)影響其性能:初始容量 和加載因子。容量是哈希表中桶的數(shù)量,初始容量只是哈希表在創(chuàng)建時(shí)的容量。

加載因子 是哈希表在其容量自動(dòng)增加之前可以達(dá)到多滿的一種尺度。當(dāng)哈希表中的條目數(shù)超出了加載因子與當(dāng)前容量的乘積時(shí),則要對(duì)該哈希表進(jìn)行 rehash 操作(即重建內(nèi)部數(shù)據(jù)結(jié)構(gòu)),從而哈希表將具有大約兩倍的桶數(shù)。

在Java編程語(yǔ)言中,加載因子默認(rèn)值為0.75,默認(rèn)哈希表元為101。

2、HashMap的同步機(jī)制

注意,此實(shí)現(xiàn)不是同步的。 如果多個(gè)線程同時(shí)訪問(wèn)一個(gè)哈希映射,而其中至少一個(gè)線程從結(jié)構(gòu)上修改了該映射,則它必須保持外部同步。

(結(jié)構(gòu)上的修改是指添加或刪除一個(gè)或多個(gè)映射關(guān)系的任何操作;以防止對(duì)映射進(jìn)行意外的非同步訪問(wèn),如下:

Map m = Collections.synchronizedMap(new HashMap(...));

參考資料:百度百科-Hashmap

java HashMap代碼

HashMap是Map接口的實(shí)現(xiàn)

public class HashMapK,V

extends AbstractMapK,V

implements MapK,V, Cloneable, Serializable

{

static final int DEFAULT_INITIAL_CAPACITY = 16;

static final int MAXIMUM_CAPACITY = 1 30;

static final float DEFAULT_LOAD_FACTOR = 0.75f;

transient Entry[] table;

transient int size;

int threshold;

final float loadFactor;

transient volatile int modCount;

public HashMap(int initialCapacity, float loadFactor) {

if (initialCapacity 0)

throw new IllegalArgumentException("Illegal initial capacity: "

initialCapacity);

if (initialCapacity MAXIMUM_CAPACITY)

initialCapacity = MAXIMUM_CAPACITY;

if (loadFactor = 0 || Float.isNaN(loadFactor))

throw new IllegalArgumentException("Illegal load factor: "

loadFactor);

int capacity = 1;

while (capacity initialCapacity)

capacity = 1;

this.loadFactor = loadFactor;

threshold = (int)(capacity * loadFactor);

table = new Entry[capacity];

init();

}

public HashMap(int initialCapacity) {

this(initialCapacity, DEFAULT_LOAD_FACTOR);

}

public HashMap() {

this.loadFactor = DEFAULT_LOAD_FACTOR;

threshold = (int)(DEFAULT_INITIAL_CAPACITY * DEFAULT_LOAD_FACTOR);

table = new Entry[DEFAULT_INITIAL_CAPACITY];

init();

}

public HashMap(Map? extends K, ? extends V m) {

this(Math.max((int) (m.size() / DEFAULT_LOAD_FACTOR) 1,

DEFAULT_INITIAL_CAPACITY), DEFAULT_LOAD_FACTOR);

putAllForCreate(m);

}

....

一下省略 --~

Java中用set 和map實(shí)現(xiàn)這段代碼,謝謝!

1、面向接口(DAO)編程,接口的實(shí)現(xiàn)。

構(gòu)建User.java實(shí)體類(lèi),構(gòu)建UserImpl.java類(lèi),實(shí)現(xiàn)UserDao接口,構(gòu)建MapDal.java,模擬數(shù)據(jù)庫(kù),Main.java模擬UI,UI只調(diào)用UserImpl,UserImpl調(diào)用MapDal。

main.java

package?baidu.zhidao;

import?java.util.*;

/**

*?Main?主方法

*?@author?bufei

*

*/

public?class?Main?{

public?static?void?main(String[]?args)?{

int?userNum?=?9;

//?定義UserList

ListUser?list?=?new?ArrayListUser();

for?(int?i?=?0;?i??userNum;?i++)?{

User?user?=?new?User();

user.setPassWord("passWord"?+?i);

user.setUserName("userName"?+?i);

list.add(user);

}

//?實(shí)例化UserImpl

UserImpl?userImpl?=?new?UserImpl(list);

//?用戶?張三?是否存在

String?userName?=?"張三";

String?passWord?=?"passWord";

User?user?=?new?User();

user.setUserName(userName);

user.setPassWord(passWord);

System.out.println("-?-?-?baiduDemo?-?-?-");

//?1、isExist(user)

System.out.println("查找用戶?"?+?userName?+?"...");

if?(userImpl.isExist(user))?{

System.out.println(userName?+?"?存在!");

}?else?{

System.out.println(userName?+?"?不存在!");

}

//?2、addUser

System.out.println("添加用戶?"?+?userName?+?",psw=?"?+?passWord?+?"?...");

userImpl.addUser(user);

//?3、changePassword(userName)

System.out.println("修改密碼...");

passWord?=?"zhangsanpasword";

if?(userImpl.changePassword(userName,?passWord))?{

System.out.println("修改成功!");

}?else?{

System.out.println("用戶不存在!");

}

//??4?selectAll()

list?=?userImpl.selectAll();

System.out.println("獲取全部User:");

for?(User?userItem?:?list)?{

System.out.println(userItem.getUserName()?+?","?+?userItem.getPassWord());

}

}

}

UserImpl.java

package?baidu.zhidao;

import?java.util.*;

/**

*?UserDao接口實(shí)現(xiàn)

*?@author?bufei

*

*/

public?class?UserImpl?implements?UserDao?{

private?MapDal?mapDal;

/**

*?構(gòu)造器,初始化Map數(shù)據(jù)庫(kù)

*/

public?UserImpl(ListUser?list)?{

mapDal?=?new?MapDal(list);

}

/**

*?1.判斷某個(gè)user是否存在

*?@param?user?用戶對(duì)象

*?@return?返回true/false用戶是否存在

*/

public?boolean?isExist(User?user)?{

boolean?rs?=?false;

rs?=?mapDal.isExist(user);

return?rs;

}

/**

*?2.添加User

*?題目所給void?返回類(lèi)型不合理

*?@param?user

*

*?*/

public?void?addUser(User?user)?{

if?(mapDal.addUser(user))?{

System.out.println("添加完成!");

}?else?{

System.out.println("添加失敗!");

}

}

/**

*?3.根據(jù)username修改password

*?@param?username

*?@param?password

*?@return?成功與否

*?*/

public?boolean?changePassword(String?userName,?String?password)?{

boolean?rs?=?false;

User?user?=?new?User();

user.setUserName(userName);

user.setPassWord(password);

rs?=?mapDal.changePassword(user);

return?rs;

}

/**

*?根據(jù)用戶對(duì)象修改密碼

*?@param?user

*?@return

*/

public?boolean?changePassword(User?user)?{

return?mapDal.changePassword(user);

}

/**

*?4.得到所有的User,用List封裝

*?@return?從數(shù)據(jù)庫(kù)查詢到所有的User

*?*/

public?ListUser?selectAll()?{

return?mapDal.selectAll();

}

}

MapDal.java

package?baidu.zhidao;

import?java.util.*;

/**

*?MapDml?用map模擬數(shù)據(jù)庫(kù),初始化生成一些User

*?單例模式,避免數(shù)據(jù)不同步

*?@author?bufei

*

*/

public?class?MapDal?{

/**?list中存map,實(shí)在繞得很,直接存User也是可以?*/

public?static?ListMapString,?String?userMapList?=?new?ArrayListMapString,?String();

/**

*?初始化,有參構(gòu)造器

*?構(gòu)造Map??map,存儲(chǔ)全部的userName,passWord,模擬數(shù)據(jù)庫(kù)

*

*/

public?MapDal(ListUser?list)?{

for?(User?user?:?list)?{

Map?userMap?=?new?HashMapString,?String();

userMap.put(user.getUserName(),?user.getPassWord());

userMapList.add(userMap);

}

}

/**

*?無(wú)參構(gòu)造器

*?*/

public?MapDal()?{

}

/**

*

*?@param?user

*?@return

*/

public?boolean?isExist(User?user)?{

boolean?rs?=?false;

//遍歷userMapList?查找用戶是否存在

for?(MapString,?String?map?:?userMapList)?{

//?找到該map

if?(map.get(user.getUserName())?!=?null)?{

rs?=?true;

}

}

return?rs;

}

/**

*?addUser,userName已存在則無(wú)法加入

*?@param?user

*?@return?boolean

*/

public?boolean?addUser(User?user)?{

boolean?rs?=?false;

//遍歷userMapList?查找用戶是否存在

for?(MapString,?String?map?:?userMapList)?{

//?找到該map,已經(jīng)存在,無(wú)法添加

if?(map.get(user.getUserName())?!=?null)?{

return?rs;

}

}

if?(!rs)?{

MapString,?String?userMap?=?new?HashMapString,?String(8);

userMap.put(user.getUserName(),?user.getPassWord());

userMapList.add(userMap);

rs?=?true;

}

return?rs;

}

/**

*?deleteUser

*?@return

*/

public?boolean?deleteUser()?{

boolean?rs?=?false;

return?rs;

}

/**

*?changePassword

*?@param?user

*?@return

*/

public?boolean?changePassword(User?user)?{

boolean?rs?=?false;

//?定義遍歷索引

int?i?=?0;

//遍歷userMapList?查找用戶是否存在

for?(MapString,?String?map?:?userMapList)?{

//?找到該map,remove,再次存入新的

if?(map.get(user.getUserName())!=null)?{

userMapList.remove(i);

//hashmap?初試默認(rèn)值?0.75-16

Map?userMap?=?new?HashMapString,?String(8);

userMap.put(user.getUserName(),?user.getPassWord());

userMapList.add(userMap);

rs?=?true;

}

i++;

}

return?rs;

}

/**

*?selectAll()

*

*?@return?返回全體user

*/

public?ListUser?selectAll()?{

ListUser?list?=?new?ArrayListUser();

//遍歷map

for?(MapString,?String?userMap?:?userMapList)?{

User?user?=?new?User();

//map訪問(wèn)需要使用Map.Entry

//entry?需要Set.iterator().next()

Set?entriSet?=?userMap.entrySet();

IteratorMap.EntryString,?String?iterator?=?entriSet.iterator();

if?(iterator.hasNext())?{

//?此時(shí)entry?是?Object

Map.EntryString,?String?entry?=?iterator.next();

user.setUserName(entry.getKey().toString());

user.setPassWord(entry.getValue().toString());

list.add(user);

}

}

return?list;

}

}

2、運(yùn)行效果


本文題目:javamap實(shí)現(xiàn)代碼 java mapisempty
網(wǎng)站地址:http://weahome.cn/article/dosisph.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部