-
isEmpty()方法判断Map是否有内容(即new分配空间后是否put键值对),若没有内容则true,否则false
-
== null是判断map是否为null(即是否new分配空间,和其中的键值对没关系),若没有内容则true,否则false
-
Map map = new HashMap<String ,String>();
System.out.println("判断map是否有内容:"+map.isEmpty());//返回true
System.out.println("判断map是否为null:"+map==null);//返回false
Map map = new HashMap<String ,String>();
map=null;
System.out.println("判断map是否为null:"+(map==null));//结果为true
System.out.println("判断map是否有内容:"+map.isEmpty());//NullPointerException
Map map = new HashMap<String ,String>();
map.put(null,null);
System.out.println("判断map是否为null:"+(map==null));//false
System.out.println("判断map是否有内容:"+map.isEmpty());//false
java
中
判断
map
是否
为
空
的方法是:可以利用
isEmpty
()函数来
判断
。
isEmpty
()函数是
java
中
用于
判断
某种容器
是否
有元素的系统库函数,例如用来
判断
ArrayList、HashSet、Hash
Map
是否
有元素等。
java
中
判断
map
是否
为
空
的方法是:利用
isEmpty
()函数来
判断
。函数介绍:
IsEmpty
()是
Java
中
用于
判断
某种容器
是否
有元素的系统库函数。如用来
判断
ArrayL...
Map
是一种无序的基于key-value的数据结构。对于开发人员来说,除了JSON以外,这种存储的方式最熟悉不过了。经常在研发的过程
中
,高频用到
Map
的数据结构。在业务逻辑层处理
中
,往往会有一些对
Map
数据类型进行一些判
空
的处理,自己总结了一下,将
判断
方法写出供大家参考:一、
Map
本身的判
空
1.1“==
null
”不能
判断
Map
的本身
是否
为
null
首先看我的demo初入
java
的时候可能会有疑问,m...
isEmpty
()方法
判断
Map
是否
有内容(即new分配
空
间后
是否
put键值对),若没有内容则true,否则false
==
null
是
判断
map
是否
为
null
(即
是否
new分配
空
间,和其
中
的键值对没关系),若没有内容则true,否则false
Map
map
= new Hash
Map
<String ,String>();
System.out.println("
判断
map
是否
有内容:"+
map
.
isEmpty
());//返回true
System.out.println("
判断
map
是否
为n
* @param sender 是String类型,邮件发送者信息
* @param password 是String类型,邮件发送者密码
* @param addressee 是String类型,邮件接收者信息
* @param subject 是String类型,传入邮件主题
* @param text 是String类型,传入邮件消息
void sendMail(String sender,String password,String addressee,String subject,String text) throws Exception;
* sendMail 发送邮件函数
* @param sender 是String类型,邮件发送者信息
* @param password 是String类型,邮件发送者密码
* @param addressee 是String类型,邮件接收者信息
* @param subject 是String类型,传入邮件主题
* @param text 是String类型,传入邮件消息
* @param enclosures
Map
<String,File> 邮件附件
* @param copyToSends
Map
<String,RecipientType> 邮件抄送信息
void sendMail(String sender,String password,String addressee,String subject,String text,
Map
<String,File> enclosures,
Map
<String,RecipientType> copyToSends) throws Exception;
* sendMail 发送邮件函数
* @param sender 是String类型,邮件发送者信息
* @param password 是String类型,邮件发送者密码
* @param subject 是String类型,传入邮件主题
* @param imgs 是File[]类型,邮件正文
中
附件的图片信息
* @param htmlContent 是String类型,传入邮件消息正文
* @param enclosures
Map
<String,File> 邮件附件
* @param copyToSends
Map
<String,RecipientType> 邮件抄送信息
void sendMail(String sender,String password,String subject,File[] imgs,String htmlContent,
Map
<String,File> enclosures,
Map
<String,RecipientType> copyToSends) throws Exception;
package com.hx.mail;
import
java
.io.File;
import
java
.io.FileNotFoundException;
import
java
.io.FileOutputStream;
import
java
.io.IOException;
import
java
.io.OutputStream;
import
java
.io.UnsupportedEncodingException;
import
java
.util.ArrayList;
import
java
.util.Hash
Map
;
import
java
.util.Iterator;
import
java
.util.List;
import
java
.util.
Map
;
import
java
.util.Properties;
import
java
.util.Set;
import
java
x.activation.DataHandler;
import
java
x.activation.DataSource;
import
java
x.activation.FileDataSource;
import
java
x.mail.Address;
import
java
x.mail.Authenticator;
import
java
x.mail.Message;
import
java
x.mail.MessagingException;
import
java
x.mail.PasswordAuthentication;
import
java
x.mail.Session;
import
java
x.mail.Transport;
import
java
x.mail.Message.RecipientType;
import
java
x.mail.internet.AddressException;
import
java
x.mail.internet.InternetAddress;
import
java
x.mail.internet.MimeBodyPart;
import
java
x.mail.internet.MimeMessage;
import
java
x.mail.internet.MimeMultipart;
import
java
x.mail.internet.MimeUtility;
import org.codehaus.xfire.attachments.ByteDataSource;
* HexiangMailServiceImpl 邮件接收发送接口实现类
* @author 380595305@qq.com
* Date 2010-05-11
* @version 1.0
public class HexiangMailServiceImpl implements HexiangMailService {
/** MailboxType 邮箱类型 */
private static
Map
<String, String> MailboxTypes =
null
;
/** host 邮箱服务器类型 */
private String host =
null
;
/** sender 邮件发送者 */
private String sender =
null
;
/** addressee 邮件接收者 */
private String addressee =
null
;
/** subject 邮件主题 */
private String subject =
null
;
/** text 邮件消息 */
private String text =
null
;
public static void init() {
MailboxTypes = new Hash
Map
<String, String>();
MailboxTypes.put("163", "smtp.163.com");
MailboxTypes.put("139", "smtp.139.com");
MailboxTypes.put("126", "smtp.126.com");
MailboxTypes.put("qq", "smtp.qq.com");
MailboxTypes.put("live", "smtp.live.cn");
MailboxTypes.put("msn", "smtp.msn.com");
MailboxTypes.put("kum", "mail.kum.net.cn");
MailboxTypes.put("hotmail", "smtp.hotmail.cn");
* initialization 实例化类成员变量
private void initialization(String sender, String addressee,
String subject, String text) {
this.sender = sender;
this.addressee = addressee;
this.subject = subject;
this.text = text;
this.host = getHost(sender);
// System.out.println("sender->"+this.sender+" |
// addressee->"+this.addressee+" | subject->"+this.subject+" |
// text->"+this.text+" | host->"+this.host);
* getHost 获取目标邮箱服务器类型
* @param sender
* 是String类型,传入邮件发送者邮箱地址信息
* @return String 返回目标邮箱服务器类型
private String getHost(String sender) {
String _host, _host_ =
null
;
_host = sender.substring(sender.indexOf("@") + 1, sender.indexOf("."));
if (MailboxTypes ==
null
) {
init();
_host_ = MailboxTypes.get(_host);
// System.out.println(_host+" <--> "+_host_);
if (_host_ ==
null
) {
// MailboxTypes.put(_host,"smtp."+_host+".com");
MailboxTypes.put(_host,
"smtp."
+ sender.substring(sender.indexOf("@") + 1, sender
.length()));
return MailboxTypes.get(_host);
public void sendMail(String sender, String password, String addressee,
String subject, String text) throws Exception {
initialization(sender, addressee, subject, text);
Properties props = System.getProperties();
props.put("mail.smtp.host", this.host);
props.put("mail.smtp.auth", "true");
ValidateAuther auther = new ValidateAuther(this.sender, password);
Session session = Session.getDefaultInstance(props, auther);
MimeMessage msg = new MimeMessage(session);
InternetAddress fromAddr = new InternetAddress(this.sender); // 发送者邮箱地址
InternetAddress toAddr = new InternetAddress(this.addressee); // 接收者邮箱地址
msg.setFrom(fromAddr);
msg.addRecipient(Message.RecipientType.TO, toAddr);
* Message.RecipientType.TO -- 接收者 Message.RecipientType.CC -- 抄送
* Message.RecipientType.BCC --秘密抄送者
msg.setSubject(this.subject); // 邮件主题
msg.setText(this.text); // 邮件信息
Transport.send(msg); // 发送邮件
public void sendMail(String sender, String password, String addressee,
String subject, String text,
Map
<String, File> enclosures,
Map
<String, RecipientType> copyToSends) throws Exception {
initialization(sender, addressee, subject, text);
Properties props = System.getProperties();
props.put("mail.smtp.host", this.host);
props.put("mail.smtp.auth", "true");
ValidateAuther auther = new ValidateAuther(this.sender, password);
Session session = Session.getDefaultInstance(props, auther);
Message msg = new MimeMessage(session);
InternetAddress fromAddr = new InternetAddress(this.sender); // 发送者邮箱地址
InternetAddress toAddr = new InternetAddress(this.addressee); // 接收者邮箱地址?
msg.setFrom(fromAddr);
msg.addRecipient(Message.RecipientType.TO, toAddr);
msg.setSubject(this.subject); // 邮件主题
msg.setText(this.text); // 邮件信息
msg = setCopyToSends(msg, copyToSends); // 设置抄送信息
try {
MimeMultipart msgMultipart = new MimeMultipart("mixed"); // 创建邮件复杂体
msgMultipart = setEnclosureFile(msgMultipart, enclosures); // 设置附件信息
msg.setContent(msgMultipart); // 将邮件复杂体添加到邮件正文
中
MimeBodyPart content = new MimeBodyPart(); // 创建邮件复杂体正文信息
msgMultipart.addBodyPart(content); // 将正文信息添加到复杂体
中
MimeMultipart bodyMultipart = new MimeMultipart("related");
content.setContent(bodyMultipart);
MimeBodyPart htmlPart = new MimeBodyPart(); // 创建HTML文本域
bodyMultipart.addBodyPart(htmlPart); // 将HTML文本域添加到正文组合
中
DataSource htmlDs = new ByteDataSource(this.text==
null
?"".getBytes():this.text.getBytes()); // 指定文本域,创建DataSource
DataHandler htmlDh = new DataHandler(htmlDs);
htmlPart.setDataHandler(htmlDh);
htmlPart.setContent(this.text, "text/html;charset=gbk");
msg.saveChanges(); // 生成邮件
String filePath = "d:\\demo1.eml";
OutputStream os = new FileOutputStream(filePath);
msg.writeTo(os);
os.close();
} catch (MessagingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
// Transport.send(msg); // 发送邮件
public void sendMail(String sender, String password, String subject,
File[] imgs, String htmlContent,
Map
<String, File> enclosures,
Map
<String, RecipientType> copyToSends) throws Exception {
initialization(sender, addressee, subject, htmlContent);
Properties props = System.getProperties();
props.put("mail.smtp.host", this.host);
props.put("mail.smtp.auth", "true");
ValidateAuther auther = new ValidateAuther(this.sender, password);
Session session = Session.getDefaultInstance(props, auther);
Message msg = new MimeMessage(session);
InternetAddress fromAddr = new InternetAddress(this.sender); // 发送者邮箱地址
// InternetAddress toAddr = new InternetAddress(this.addressee); //
// 接收者邮箱地址?
msg.setFrom(fromAddr);
// msg.addRecipient(Message.RecipientType.TO, toAddr);
msg.setSubject(this.subject); // 邮件主题
// msg.setText(this.text); // 邮件信息
msg = setCopyToSends(msg, copyToSends); // 设置抄送信息
try {
MimeMultipart msgMultipart = new MimeMultipart("mixed"); // 创建邮件复杂体
msgMultipart = setEnclosureFile(msgMultipart, enclosures); // 设置附件信息
msg.setContent(msgMultipart); // 将邮件复杂体添加到邮件正文
中
if (htmlContent !=
null
|| (imgs !=
null
&& imgs.length > 0)) {
MimeBodyPart content = new MimeBodyPart(); // 创建邮件复杂体正文信息
msgMultipart.addBodyPart(content); // 将正文信息添加到复杂体
中
// 搭建正文组合架构 -- 创建正文复杂体<含有html文本和图片文件> //related --> 关联关系
MimeMultipart bodyMultipart = new MimeMultipart("related");
content.setContent(bodyMultipart);
StringBuffer htmlBuffer = new StringBuffer();
// 添加HTML文本域信息
// if (htmlContent !=
null
) {
// htmlContent = htmlBuffer.toString();
MimeBodyPart htmlPart = new MimeBodyPart(); // 创建HTML文本域
bodyMultipart.addBodyPart(htmlPart); // 将HTML文本域添加到正文组合
中
// DataSource htmlDs = new FileDataSource(htmlContent);//
// 指定文件域,创建DataSource
DataSource htmlDs = new ByteDataSource(htmlContent.getBytes()); // 指定文本域,创建DataSource
DataHandler htmlDh = new DataHandler(htmlDs); // DataHandler
// 文件包装数据类
htmlPart.setDataHandler(htmlDh);
// htmlPart.setContent(htmlContent,"text/html;charset=gbk");
// 添加图片域信息
if (imgs !=
null
&& imgs.length > 0) {
htmlBuffer.append(htmlContent); // HTML格式文本域
for (int i = 0; i < imgs.length; i++) {
MimeBodyPart gifPart = new MimeBodyPart();
bodyMultipart.addBodyPart(gifPart); // 将图片域添加到正文组合
中
DataSource gifDs = new FileDataSource(imgs[i]);
DataHandler gifDh = new DataHandler(gifDs);
gifPart.setDataHandler(gifDh);
gifPart.setFileName(MimeUtility
.encodeText(getFileName(imgs[i].getName())));
htmlBuffer.append("<img src='"
+ MimeUtility.encodeText(imgs[i].getName())
+ "'>"); // 将图片域加入到文本域
中
gifPart.setHeader("Content-Location", MimeUtility
.encodeText(imgs[i].getName())); // 指定该图片(文件)路径从本地关联文件
中
找
htmlContent = htmlBuffer.toString();
// 设置正文文本域及文本类型
htmlPart.setContent(htmlContent, "text/html;charset=gbk");
msg.saveChanges(); // 生成邮件
String filePath = "d:\\demo2.eml";
OutputStream os = new FileOutputStream(filePath);
msg.writeTo(os);
os.close();
} catch (MessagingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
Transport.send(msg); // 发送邮件
// 获取邮件地址信息
public static Address[] getAddress(List<String> recpType)
throws AddressException, UnsupportedEncodingException {
if (recpType ==
null
|| recpType.
isEmpty
()) {
return
null
;
Address[] addrs = new Address[recpType.size()];
for (int i = 0; i < addrs.length; i++) {
String nickNameAccount = getNickName(recpType.get(i));
String[] nickName_account = nickNameAccount.split(",");
// System.out.println(nickName_account);
addrs[i] = new InternetAddress("\""
+ MimeUtility.encodeText("" + nickName_account[0] + "")
+ "\" <" + nickName_account[1] + ">");
return addrs;
// 获取邮箱账号昵称信息
public static String getNickName(String mailAccount) {
int index = mailAccount.lastIndexOf("<");
if (index == -1) { // 不含有昵称信息,未找到"<>"
// hexiang221@163.com
String nickName = mailAccount.substring(0, mailAccount
.lastIndexOf("@"));
return nickName + "," + mailAccount;
} else if (index == 0) { // 不含有昵称信息 但找到了"<>"
// <hexiang@163.com>
String nickName = mailAccount.substring(index + 1, mailAccount
.lastIndexOf("@"));
String account = mailAccount.substring(index + 1, mailAccount
.lastIndexOf(">"));
return nickName + "," + account;
} else if (index > 0) { // 含有昵称信息,并且找到了"<>"
String nickName = mailAccount.substring(0, index);
String account = mailAccount.substring(index + 1, mailAccount
.lastIndexOf(">"));
return nickName + "," + account;
return mailAccount;
// 获取附件显示名称
public static String getFileName(String filePath) {
String fileName =
null
; // ?????
if (filePath ==
null
|| filePath.length() == 0) {
return
null
;
int index = filePath.lastIndexOf("/");
if (index == -1) {
return filePath;
fileName = filePath.substring(filePath.lastIndexOf("/") + 1);
int index2 = fileName.lastIndexOf("\\");
if (index2 == -1) {
return fileName;
return fileName.substring(filePath.lastIndexOf("\\"));
// 设置邮件附件信息
public static MimeMultipart setEnclosureFile(MimeMultipart msgMultipart,
Map
<String, File> enclosures) throws MessagingException,
UnsupportedEncodingException {
if (enclosures ==
null
|| enclosures.
isEmpty
()) {
return msgMultipart;
if (msgMultipart ==
null
) {
msgMultipart = new MimeMultipart("mixed"); // 创建邮件复杂体
Set<String> enclosureSet = enclosures.keySet();
Iterator<String> enclosureIter = enclosureSet.iterator();
while (enclosureIter.hasNext()) {
String attchFileName = enclosureIter.next();
MimeBodyPart attch = new MimeBodyPart();
msgMultipart.addBodyPart(attch);
File temEnclosureFile = enclosures.get(attchFileName);
DataSource ds = new FileDataSource(temEnclosureFile);
DataHandler dh = new DataHandler(ds);
attch.setDataHandler(dh);
attch.setFileName(MimeUtility
.encodeText(getFileName(attchFileName)));// 设置附件显示名称
return msgMultipart;
public static Message setCopyToSends(Message msg,
Map
<String, RecipientType> copyToSends) throws AddressException,
UnsupportedEncodingException, MessagingException {
if (copyToSends ==
null
) {
return msg;
Set<String> copyToSendSet = copyToSends.keySet();
Iterator<String> copyToSendIter = copyToSendSet.iterator();
List<String> to = new ArrayList<String>(); // 定义接收者账号信息集
List<String> cc = new ArrayList<String>(); // 定义抄送者账号信息集
List<String> bcc = new ArrayList<String>();// 定义秘密抄送者账号信息集
while (copyToSendIter.hasNext()) {
String address = copyToSendIter.next(); // 获取抄送者邮箱账号信息
RecipientType tmpRecipientType = copyToSends.get(address);
if (tmpRecipientType == RecipientType.TO) {
to.add(address);
if (tmpRecipientType == RecipientType.CC) {
cc.add(address);
if (tmpRecipientType == RecipientType.BCC) {
bcc.add(address);
// 获取接收者信息集
Address[] to_addrs = getAddress(to);
if (to_addrs !=
null
) {
msg.setRecipients(MimeMessage.RecipientType.TO, to_addrs);
// 获取抄送者信息集
Address[] cc_addrs = getAddress(cc);
if (cc_addrs !=
null
) {
msg.setRecipients(MimeMessage.RecipientType.CC, cc_addrs);
// 获取秘密抄送者信息集
Address[] bcc_addrs = getAddress(bcc);
if (bcc_addrs !=
null
) {
msg.setRecipients(MimeMessage.RecipientType.BCC, bcc_addrs);
return msg;
* ValidateAuther 邮件验证类,验证邮件发送者信息
class ValidateAuther extends Authenticator {
/** 邮件发送者 */
private String sender;
/** 邮件接受者 */
private String password;
* ValidateAuther 验证邮件发送者信息
* @param userName
* 是String类型,传入邮件发送者账户
* @param password
* 是String类型,传入邮件发送者账户密码
public ValidateAuther(String sender, String password) {
this.sender = sender;
this.password = password;
* getPasswordAuthentication 验证邮件发送者账户信息的函数
* @param userName
* 邮件发送者账户信息
* @param password
* 邮件发送者账户密码
* @return PasswordAuthentication 返回邮件发送者账户验证信息
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(sender, password);
// 支持WebService远程调用
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>HexiangMailService</name>
<serviceClass>com.hx.mail.HexiangMailService</serviceClass>
<implementationClass>com.hx.mail.HexiangMailServiceImpl</implementationClass>
<style>wrapped</style>
<use>literal</use>
<scope>application</scope>
</service>
</beans>
代码如下: /* *
MAP
对象,实现
MAP
功能 * * 接口: * size() 获取
MAP
元素个数 *
isEmpty
()
判断
MAP
是否
为
空
* clear() 删除
MAP
所有元素 * put(key, value) 向
MAP
中
增加元素(key, value) * remove(key) 删除指定KEY的元素,成功返回True,失败返回False * get(key) 获取指定KEY的元素值VALUE,失败返回
NULL
* element(index) 获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回
NULL
* contain
Map
集合对于开发人员来说这种数据类型再熟悉 不过,个人也是特别喜欢这种键值对存在的数据类型,在自己做政府项目
中
,老项目组开发人员已经把controller层接收到的数据全部封装成立
Map
类型。
在业务逻辑层处理
中
,往往会对
Map
数据类型进行一些判
空
的处理,自己总结了一下,将
判断
方法写出供大家参考:
一、
Map
本身得判
空
1.1“==
null
”
判断
Map
本身
是否
为
null
首先看我的demo
public static void main(String[] args) {
Map
<String, Object> hash
Map
= new Hash
Map
<String, Object>();
hash
Map
.put("key", "value");
hash
Map
.remove("key");
if (hash
Map
!=
null
&& hash
Map
.
isEmpty
()) {
System.out.println("hashMa
1.使用List.
isEmpty
()方法。2.使用List.size()方法。3.使用CollectionUtils.isNotEmpty(Collection coll)方法。这需要使用Apache Commons Collections库。
最近在面试的时候,经常会遇到一个问题:请问如何
判断
一个list/
map
集合为
空
?
这个问题我们可以反向思考,一个集合不为
空
,假设有一个对象
map
,要满足
map
!=
null
&& !
map
.
isEmpty
()
在这里会出现一个误区,需要特别注意:
List<T> list=new ArrayList<>();
if ( !list.isE...
作者:李良逸http://blog.imuxuan.com判
空
灾难作为搬砖党的一族们,我们对判
空
一定再熟悉不过了,不要跟我说你很少进行判
空
,除非你喜欢
Null
PointerExcepti...
public static void main(String[] args) {
Map
<String, String>
map
= new Hash
Map
<String, String>();
System.out.println("
map
为
空
:" +
map
.
isEmpty
());
//加入元素