资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

javamap实现代码 java mapisempty

java Map 怎么遍历

关于java中遍历map具体有四种方式,请看下文详解。

创新互联建站成立以来不断整合自身及行业资源、不断突破观念以使企业策略得到完善和成熟,建立了一套“以技术为基点,以客户需求中心、市场为导向”的快速反应体系。对公司的主营项目,如中高端企业网站企划 / 设计、行业 / 企业门户设计推广、行业门户平台运营、APP应用开发成都手机网站制作、微信网站制作、软件开发、郑州服务器托管等实行标准化操作,让客户可以直观的预知到从创新互联建站可以获得的服务效果。

1、这是最常见的并且在大多数情况下也是最可取的遍历方式,在键值都需要时使用。

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循环中遍历keys或values。

如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用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、通过键找值遍历(效率低)

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

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

Integer value = map.get(key);

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

}

假设Map中的键值对为1=11,2=22,3=33,现用方法1来遍历Map代码和调试结果如下:

扩展资料:

1、HashMap的重要参数

HashMap 的实例有两个参数影响其性能:初始容量 和加载因子。容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。

加载因子 是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行 rehash 操作(即重建内部数据结构),从而哈希表将具有大约两倍的桶数。

在Java编程语言中,加载因子默认值为0.75,默认哈希表元为101。

2、HashMap的同步机制

注意,此实现不是同步的。 如果多个线程同时访问一个哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。

(结构上的修改是指添加或删除一个或多个映射关系的任何操作;以防止对映射进行意外的非同步访问,如下:

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

参考资料:百度百科-Hashmap

java HashMap代码

HashMap是Map接口的实现

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实现这段代码,谢谢!

1、面向接口(DAO)编程,接口的实现。

构建User.java实体类,构建UserImpl.java类,实现UserDao接口,构建MapDal.java,模拟数据库,Main.java模拟UI,UI只调用UserImpl,UserImpl调用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);

}

// 实例化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接口实现

* @author bufei

*

*/

public class UserImpl implements UserDao {

private MapDal mapDal;

/**

* 构造器,初始化Map数据库

*/

public UserImpl(ListUser list) {

mapDal = new MapDal(list);

}

/**

* 1.判断某个user是否存在

* @param user 用户对象

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

*/

public boolean isExist(User user) {

boolean rs = false;

rs = mapDal.isExist(user);

return rs;

}

/**

* 2.添加User

* 题目所给void 返回类型不合理

* @param user

*

* */

public void addUser(User user) {

if (mapDal.addUser(user)) {

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

} else {

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

}

}

/**

* 3.根据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;

}

/**

* 根据用户对象修改密码

* @param user

* @return

*/

public boolean changePassword(User user) {

return mapDal.changePassword(user);

}

/**

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

* @return 从数据库查询到所有的User

* */

public ListUser selectAll() {

return mapDal.selectAll();

}

}

MapDal.java

package baidu.zhidao;

import java.util.*;

/**

* MapDml 用map模拟数据库,初始化生成一些User

* 单例模式,避免数据不同步

* @author bufei

*

*/

public class MapDal {

/** list中存map,实在绕得很,直接存User也是可以 */

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

/**

* 初始化,有参构造器

* 构造Map  map,存储全部的userName,passWord,模拟数据库

*

*/

public MapDal(ListUser list) {

for (User user : list) {

Map userMap = new HashMapString, String();

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

userMapList.add(userMap);

}

}

/**

* 无参构造器

* */

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已存在则无法加入

* @param user

* @return boolean

*/

public boolean addUser(User user) {

boolean rs = false;

//遍历userMapList 查找用户是否存在

for (MapString, String map : userMapList) {

// 找到该map,已经存在,无法添加

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 初试默认值 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访问需要使用Map.Entry

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

Set entriSet = userMap.entrySet();

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

if (iterator.hasNext()) {

// 此时entry 是 Object

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

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

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

list.add(user);

}

}

return list;

}

}

2、运行效果


当前名称:javamap实现代码 java mapisempty
分享URL:http://cdkjz.cn/article/dosisph.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220