﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Dust Of Dream-随笔分类-牧羊心得</title><link>http://www.blogjava.net/windonly/category/26318.html</link><description>知识真的是一个圆么?</description><language>zh-cn</language><lastBuildDate>Fri, 18 Apr 2008 10:46:16 GMT</lastBuildDate><pubDate>Fri, 18 Apr 2008 10:46:16 GMT</pubDate><ttl>60</ttl><item><title>JMail 简单应用-文件传输</title><link>http://www.blogjava.net/windonly/archive/2008/03/19/187159.html</link><dc:creator>Anemone</dc:creator><author>Anemone</author><pubDate>Wed, 19 Mar 2008 02:03:00 GMT</pubDate><guid>http://www.blogjava.net/windonly/archive/2008/03/19/187159.html</guid><wfw:comment>http://www.blogjava.net/windonly/comments/187159.html</wfw:comment><comments>http://www.blogjava.net/windonly/archive/2008/03/19/187159.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/windonly/comments/commentRss/187159.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/windonly/services/trackbacks/187159.html</trackback:ping><description><![CDATA[&#160;&#160;&#160; 日常工作中,常常要将在公司做的东西拷回家,或者要从家里拷东西到公司,但是如果用U盘拷又太麻烦,上web发邮件又有点烦,所以就做了下面的小程序,发送前切版里的内容到指定邮箱来传递文件.<br />
&#160;&#160;&#160; 相关技术点:<br />
&#160;&#160;&#160; 1.JMail邮件发送<br />
&#160;&#160;&#160; 2.剪切板提取<br />
&#160;&#160;  具体代码实现如下:<br />
<div style="border-left-color: #cccccc; padding-top: 4px; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; background-color: #eeeeee; font-size: 13px; width: 98%; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000;">/*</span><span style="color: #008000;"><br />
&#160;*&#160;Created&#160;on&#160;2008-3-5<br />
&#160;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">package</span><span style="color: #000000;">&#160;org.dueam.ft;<br />
<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&#160;java.awt.HeadlessException;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&#160;java.awt.Toolkit;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&#160;java.awt.datatransfer.DataFlavor;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&#160;java.awt.datatransfer.UnsupportedFlavorException;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&#160;java.io.File;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&#160;java.io.IOException;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&#160;java.text.SimpleDateFormat;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&#160;java.util.Date;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&#160;java.util.List;<br />
<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&#160;org.apache.commons.mail.EmailAttachment;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&#160;org.apache.commons.mail.EmailException;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&#160;org.apache.commons.mail.MultiPartEmail;<br />
<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&#160;sun.misc.BASE64Encoder;<br />
<br />
</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&#160;*&#160;剪切板内容发生<br />
&#160;*&#160;</span><span style="color: #808080;">@author</span><span style="color: #008000;">&#160;&lt;a&#160;href="mailto:windonly@gmail.com">Anemone&lt;/a><br />
&#160;*&#160;hz,zj,china(2008-3-5)<br />
&#160;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&#160;ClipboardFileTransmission&#160;{<br />
<br />
&#160;&#160;&#160;&#160;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&#160;&#160;&#160;&#160;&#160;*&#160;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&#160;args<br />
&#160;&#160;&#160;&#160;&#160;*&#160;</span><span style="color: #808080;">@throws</span><span style="color: #008000;">&#160;EmailException<br />
&#160;&#160;&#160;&#160;&#160;*&#160;</span><span style="color: #808080;">@throws</span><span style="color: #008000;">&#160;IOException<br />
&#160;&#160;&#160;&#160;&#160;*&#160;</span><span style="color: #808080;">@throws</span><span style="color: #008000;">&#160;UnsupportedFlavorException<br />
&#160;&#160;&#160;&#160;&#160;*&#160;</span><span style="color: #808080;">@throws</span><span style="color: #008000;">&#160;HeadlessException<br />
&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&#160;&#160;&#160;&#160;@SuppressWarnings(</span><span style="color: #000000;">"</span><span style="color: #000000;">unchecked</span><span style="color: #000000;">"</span><span style="color: #000000;">)<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&#160;main(String[]&#160;args)&#160;</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&#160;EmailException,&#160;HeadlessException,&#160;UnsupportedFlavorException,<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IOException&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;String&#160;context&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;List</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">File</span><span style="color: #000000;">></span><span style="color: #000000;">&#160;fileList&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;*&#160;处理前切版<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&#160;(DataFlavor&#160;df&#160;:&#160;Toolkit.getDefaultToolkit().getSystemClipboard().getAvailableDataFlavors())&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">如果拷贝的是文本内容</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&#160;(df.equals(DataFlavor.stringFlavor))&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;context&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;(String)&#160;Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&#160;(df.equals(DataFlavor.javaFileListFlavor))&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">如果拷贝的是文件则当附件发送</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;fileList&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;(List</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">File</span><span style="color: #000000;">></span><span style="color: #000000;">)&#160;Toolkit.getDefaultToolkit().getSystemClipboard().getData(<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DataFlavor.javaFileListFlavor);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&#160;((</span><span style="color: #0000ff;">null</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">==</span><span style="color: #000000;">&#160;context&#160;</span><span style="color: #000000;">||</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">""</span><span style="color: #000000;">.equals(context))&#160;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&#160;(fileList&#160;</span><span style="color: #000000;">==</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">||</span><span style="color: #000000;">&#160;fileList.isEmpty()))&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&#160;(</span><span style="color: #0000ff;">null</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">==</span><span style="color: #000000;">&#160;context&#160;</span><span style="color: #000000;">||</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">""</span><span style="color: #000000;">.equals(context))&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;context&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">"</span><span style="color: #000000;">具体资料请看附件</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;MultiPartEmail&#160;email&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&#160;MultiPartEmail();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">&#160;发送服务器</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;email.setHostName(</span><span style="color: #000000;">"</span><span style="color: #000000;">smtp.163.com</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">服务器用户和密码(如果你自己搞了台不用验证的邮件服务器就不用了)</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;email.setAuthentication(</span><span style="color: #000000;">"</span><span style="color: #000000;">XXX</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">"</span><span style="color: #000000;">XXX</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">接收的邮箱</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;email.addTo(</span><span style="color: #000000;">"</span><span style="color: #000000;">XXX@gmail.com</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">"</span><span style="color: #000000;">我的资料库</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">发送服务器的邮件地址,现在很多邮件提供商都有验证这个同用户名是否对应,还是老老实实填真实的吧</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;email.setFrom(</span><span style="color: #000000;">"</span><span style="color: #000000;">XXX@163.com</span><span style="color: #000000;">"</span><span style="color: #000000;">,&#160;</span><span style="color: #000000;">"</span><span style="color: #000000;">Anemone</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;email.setSubject(</span><span style="color: #000000;">"</span><span style="color: #000000;">[日常资料传递]-</span><span style="color: #000000;">"</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;getTime());<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">文本编码</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;email.setCharset(</span><span style="color: #000000;">"</span><span style="color: #000000;">utf-8</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;email.setMsg(context);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&#160;(</span><span style="color: #0000ff;">null</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&#160;fileList)<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&#160;(File&#160;f&#160;:&#160;fileList)&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&#160;(f.exists()&#160;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&#160;f.isFile())&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">处理附件</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;EmailAttachment&#160;attachment&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&#160;EmailAttachment();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;attachment.setPath(f.getPath());<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;attachment.setDisposition(EmailAttachment.ATTACHMENT);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;attachment.setDescription(getTime()&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">"</span><span style="color: #000000;">By&#160;Anemone</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;BASE64Encoder&#160;enc&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&#160;BASE64Encoder();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000;">//</span><span style="color: #008000;">附件中文名问题</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;attachment.setName(</span><span style="color: #000000;">"</span><span style="color: #000000;">=?GBK?B?</span><span style="color: #000000;">"</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;enc.encode(f.getName().getBytes())&#160;</span><span style="color: #000000;">+</span><span style="color: #000000;">&#160;</span><span style="color: #000000;">"</span><span style="color: #000000;">?=</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;email.attach(attachment);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;email.send();<br />
<br />
&#160;&#160;&#160;&#160;}<br />
<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&#160;String&#160;getTime()&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SimpleDateFormat&#160;df&#160;</span><span style="color: #000000;">=</span><span style="color: #000000;">&#160;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&#160;SimpleDateFormat(</span><span style="color: #000000;">"</span><span style="color: #000000;">yyyy-MM-dd&#160;HH:mm</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&#160;df.format(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&#160;Date());<br />
&#160;&#160;&#160;&#160;}<br />
<br />
}<br />
</span></div>
以上代码在163和gmail之间测试通过过,建议用exe4j打成EXE文件,然后扔到system32目录下面,这样只要想发送资料的时候,只要复制下资料,再执行下这个命令就一切都OK了.<br />
相关类包:<a target="_blank" href="http://www.blogjava.net/Files/windonly/%E9%82%AE%E4%BB%B6%E5%8F%91%E9%80%81%E7%9B%B8%E5%85%B3JAR%E5%8C%85.rar">下载</a><br />
<br />
<br />
<img src ="http://www.blogjava.net/windonly/aggbug/187159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/windonly/" target="_blank">Anemone</a> 2008-03-19 10:03 <a href="http://www.blogjava.net/windonly/archive/2008/03/19/187159.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ArrayUtils学习笔记</title><link>http://www.blogjava.net/windonly/archive/2008/02/26/182278.html</link><dc:creator>Anemone</dc:creator><author>Anemone</author><pubDate>Tue, 26 Feb 2008 10:23:00 GMT</pubDate><guid>http://www.blogjava.net/windonly/archive/2008/02/26/182278.html</guid><wfw:comment>http://www.blogjava.net/windonly/comments/182278.html</wfw:comment><comments>http://www.blogjava.net/windonly/archive/2008/02/26/182278.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/windonly/comments/commentRss/182278.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/windonly/services/trackbacks/182278.html</trackback:ping><description><![CDATA[<strong><span style="font-size: 18pt;"><span style="font-size: 14pt;">
ArrayUtils 拥有以下方法:</span></span></strong>
<dl>
<dt>toString</dt>
<dd>将一个数组转换成String,用于打印数组</dd>
<dt>isEquals</dt>
<dd>判断两个数组是否相等,采用EqualsBuilder进行判断</dd>
<dt>toMap</dt>
<dd>将一个数组转换成Map,如果数组里是Entry则其Key与Value就是新Map的Key和Value,如果是Object[]则Object[0]为KeyObject[1]为Value</dd>
<dt>clone</dt>
<dd>拷贝数组</dd>
<dt>subarray</dt>
<dd>截取子数组</dd>
<dt>isSameLength</dt>
<dd>判断两个数组长度是否相等</dd>
<dt>getLength</dt>
<dd>获得数组的长度</dd>
<dt>isSameType</dt>
<dd>判段两个数组的类型是否相同</dd>
<dt>reverse</dt>
<dd>数组反转</dd>
<dt>indexOf</dt>
<dd>查询某个Object在数组中的位置,可以指定起始搜索位置</dd>
<dt>lastIndexOf</dt>
<dd>反向查询某个Object在数组中的位置,可以指定起始搜索位置</dd>
<dt>contains</dt>
<dd>查询某个Object是否在数组中</dd>
<dt>toObject</dt>
<dd>将基本数据类型转换成外包型数据</dd>
<dt>isEmpty</dt>
<dd>判断数组是否为空(null和length=0的时候都为空)</dd>
<dt>addAll</dt>
<dd>合并两个数组</dd>
<dt>add</dt>
<dd>添加一个数据到数组</dd>
<dt>remove</dt>
<dd>删除数组中某个位置上的数据</dd>
<dt>removeElement</dt>
<dd>删除数组中某个对象(从正序开始搜索,删除第一个)</dd>
</dl>eg:<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;1.打印数组</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.toString(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;{1,4,2,3}</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.toString(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Integer[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;{1,4,2,3}</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.toString(</span><span style="color: #0000ff;">null</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">I'm&nbsp;nothing!</span><span style="color: #000000;">"</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;I'm&nbsp;nothing!<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;2.判断两个数组是否相等,采用EqualsBuilder进行判断<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;只有当两个数组的数据类型,长度,数值顺序都相同的时候,该方法才会返回True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;2.1&nbsp;两个数组完全相同</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.isEquals(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;2.2&nbsp;数据类型以及长度相同,但各个Index上的数据不是一一对应</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.isEquals(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;2.3&nbsp;数组的长度不一致</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.isEquals(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;false<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;2.4&nbsp;不同的数据类型</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.isEquals(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">long</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;false</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.isEquals(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Object[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Object[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;(</span><span style="color: #0000ff;">long</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;false<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;2.5&nbsp;Null处理,如果输入的两个数组都为null时候则返回true</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.isEquals(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;false</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.isEquals(</span><span style="color: #0000ff;">null</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;true<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;3.将一个数组转换成Map<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;如果数组里是Entry则其Key与Value就是新Map的Key和Value,如果是Object[]则Object[0]为KeyObject[1]为Value<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;对于Object[]数组里的元素必须是instanceof&nbsp;Object[]或者Entry,即不支持基本数据类型数组<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;如:ArrayUtils.toMap(new&nbsp;Object[]{new&nbsp;int[]{1,2},new&nbsp;int[]{3,4}})会出异常</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.toMap(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Object[]&nbsp;{&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Object[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Object[]&nbsp;{&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">&nbsp;}&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;{1=2,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;3=4}</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.toMap(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Integer[][]&nbsp;{&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Integer[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Integer[]&nbsp;{&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">&nbsp;}&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;{1=2,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;3=4}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;4.拷贝数组</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.clone(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;{3,2,4}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;5.截取数组</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.subarray(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;{1,5}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;起始index为2(即第三个数据)结束index为4的数组</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.subarray(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;{1,5,6}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;如果endIndex大于数组的长度,则取beginIndex之后的所有数据<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;6.判断两个数组的长度是否相等</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.isSameLength(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Integer[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Long[]&nbsp;{&nbsp;</span><span style="color: #000000;">2L</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">8L</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">10L</span><span style="color: #000000;">&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;true<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;7.获得数组的长度</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.getLength(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">long</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">23</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;3<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;8.判段两个数组的类型是否相同</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.isSameType(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">long</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">long</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;true</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.isSameType(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">long</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;false<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;9.数组反转</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;array&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">&nbsp;};<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.reverse(array);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;{5,2,1}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;10.查询某个Object在数组中的位置,可以指定起始搜索位置,找不到返回-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;10.1&nbsp;从正序开始搜索,搜到就返回当前的index否则返回-1</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.indexOf(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;2</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.indexOf(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;10.2&nbsp;从逆序开始搜索,搜到就返回当前的index否则返回-1</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.lastIndexOf(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;2<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;11.查询某个Object是否在数组中</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.contains(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;对于Object数据是调用该Object.equals方法进行判断</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.contains(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Object[]&nbsp;{&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #000000;">1L</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;false<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;12.基本数据类型数组与外包型数据类型数组互转</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.toObject(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;new</span><span style="color: #008000;"> Integer[]{Integer,Integer}</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.toPrimitive(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Integer[]&nbsp;{&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Integer(</span><span style="color: #000000;">1</span><span style="color: #000000;">),&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Integer(</span><span style="color: #000000;">2</span><span style="color: #000000;">)&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;new </span><span style="color: #008000;">int[]{1,2}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;13.判断数组是否为空(null和length=0的时候都为空)</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.isEmpty(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[</span><span style="color: #000000;">0</span><span style="color: #000000;">]);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;true</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.isEmpty(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Object[]&nbsp;{&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;false<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;14.合并两个数组</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.addAll(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">&nbsp;});</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;{1,3,5,2,4}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;15.添加一个数据到数组</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.add(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;{1,3,5,4}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;16.删除数组中某个位置上的数据</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.remove(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;{1,5}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;17.删除数组中某个对象(从正序开始搜索,删除第一个)</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayUtils.removeElement(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">[]&nbsp;{&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">&nbsp;},&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;{1,5}</span></div>
<img src ="http://www.blogjava.net/windonly/aggbug/182278.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/windonly/" target="_blank">Anemone</a> 2008-02-26 18:23 <a href="http://www.blogjava.net/windonly/archive/2008/02/26/182278.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>发帖机的应对策略</title><link>http://www.blogjava.net/windonly/archive/2007/10/01/150104.html</link><dc:creator>Anemone</dc:creator><author>Anemone</author><pubDate>Mon, 01 Oct 2007 12:58:00 GMT</pubDate><guid>http://www.blogjava.net/windonly/archive/2007/10/01/150104.html</guid><wfw:comment>http://www.blogjava.net/windonly/comments/150104.html</wfw:comment><comments>http://www.blogjava.net/windonly/archive/2007/10/01/150104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/windonly/comments/commentRss/150104.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/windonly/services/trackbacks/150104.html</trackback:ping><description><![CDATA[现在网络上发帖机横行,如何在尽可能少地影响用户体验的同时阻止发帖机是每个网站面临的课题.<br />
<strong>一 常见发帖机类型及其原理</strong><br />
1)程序自动构建字段内容,然后通过程序自动POST到服务器.<br />
2)通过按键精灵之类的模拟器模拟键盘和鼠标操作,以达到自动发帖的目的.<br />
<strong>二 发帖机行为分析</strong><br />
发帖机主要是为了发布广告信息,所以一般发帖机都是采用即时创建帐号==&gt;然后发帖==&gt;然后闪人流程散布信息.<br />
<strong>三 解决方案</strong><br />
1)通过增加一个特殊字段,系统可以通过验证这个特殊字段来确认当前信息是否是系统实时产生.这种方法可以有效抑制通过程序自动POST数据的发帖机,但是无法阻止模拟器类型的发帖机.<br />
2)验证码.验证码是最有效的阻止发帖机的手段,但验证码也影响了用户的发帖体验,根据发帖机的行为分析我们可以采用如果当前用户注册还未满一个月或者发帖数还未达到10之前必需输入验证码,这样既不影响老用户的发帖体验又可以达到抑制发帖机的作用.<br />
<strong>四 特殊字段产生策略</strong><br />
可以采用时间戳+时间戳加密(<a href="http://www.blogjava.net/windonly/archive/2007/09/22/147314.html" target="_blank">加密方案参见我的另一篇文章</a>),然后在服务器验证当前客户端传上来的时间戳是否在允许的timeout之内. 
<img src ="http://www.blogjava.net/windonly/aggbug/150104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/windonly/" target="_blank">Anemone</a> 2007-10-01 20:58 <a href="http://www.blogjava.net/windonly/archive/2007/10/01/150104.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>