首页 > 技术文章 > JAVA 集合 List 分组的两种方法

jobs-lgy 2017-02-21 14:48 原文

<h1>
    <span class="link_title"><a href="/yangxiaojun9238/article/details/51500934">
    JAVA 集合 List 分组的两种方法            
    </a></span>
</h1>
    <div class="article_manage clearfix">
    <div class="article_r">
        <span class="link_postdate">2016-05-25 19:25</span>
        <span class="link_view" title="阅读次数">2243人阅读</span>
        <span class="link_comments" title="评论次数"> <a href="#comments" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_pinglun'])">评论</a>(0)</span>
        <span class="link_collect tracking-ad" data-mod="popu_171"> <a href="javascript:void(0);" onclick="javascript:collectArticle('JAVA+%e9%9b%86%e5%90%88+List+%e5%88%86%e7%bb%84%e7%9a%84%e4%b8%a4%e7%a7%8d%e6%96%b9%e6%b3%95','51500934');return false;" title="收藏" target="_blank">收藏</a></span>
         <span class="link_report"> <a href="#report" onclick="javascript:report(51500934,2);return false;" title="举报">举报</a></span>

    </div>
</div>
<div class="embody" style="display:none" id="embody">
    <span class="embody_t">本文章已收录于:</span>
    <div class="embody_c" id="lib" value="{&quot;err&quot;:0,&quot;msg&quot;:&quot;ok&quot;,&quot;data&quot;:[]}"></div>
</div>
<style type="text/css">        
        .embody{
            padding:10px 10px 10px;
            margin:0 -20px;
            border-bottom:solid 1px #ededed;                
        }
        .embody_b{
            margin:0 ;
            padding:10px 0;
        }
        .embody .embody_t,.embody .embody_c{
            display: inline-block;
            margin-right:10px;
        }
        .embody_t{
            font-size: 12px;
            color:#999;
        }
        .embody_c{
            font-size: 12px;
        }
        .embody_c img,.embody_c em{
            display: inline-block;
            vertical-align: middle;               
        }
         .embody_c img{               
            width:30px;
            height:30px;
        }
        .embody_c em{
            margin: 0 20px 0 10px;
            color:#333;
            font-style: normal;
        }
</style>
<script type="text/javascript">
    $(function () {
        try
        {
            var lib = eval("("+$("#lib").attr("value")+")");
            var html = "";
            if (lib.err == 0) {
                $.each(lib.data, function (i) {
                    var obj = lib.data[i];
                    //html += '<img src="' + obj.logo + '"/>' + obj.name + "&nbsp;&nbsp;";
                    html += ' <a href="' + obj.url + '" target="_blank">';
                    html += ' <img src="' + obj.logo + '">';
                    html += ' <em><b>' + obj.name + '</b></em>';
                    html += ' </a>';
                });
                if (html != "") {
                    setTimeout(function () {
                        $("#lib").html(html);                      
                        $("#embody").show();
                    }, 100);
                }
            }      
        } catch (err)
        { }
        
    });
</script>
  <div class="category clearfix">
    <div class="category_l">
       <img src="http://static.blog.csdn.net/images/category_icon.jpg">
        <span>分类:</span>
    </div>
    <div class="category_r">
                <label onclick="GetCategoryArticles('1088196','yangxiaojun9238','top','51500934');">
                    <span onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_fenlei']);">JAVASE学习笔记<em>(22)</em></span>
                  <img class="arrow-down" src="http://static.blog.csdn.net/images/arrow_triangle _down.jpg" style="display:inline;">
                  <img class="arrow-up" src="http://static.blog.csdn.net/images/arrow_triangle_up.jpg" style="display:none;">
                    <div class="subItem">
                        <div class="subItem_t"><a href="http://blog.csdn.net/yangxiaojun9238/article/category/1088196" target="_blank">作者同类文章</a><i class="J_close">X</i></div>
                        <ul class="subItem_l" id="top_1088196">                            
                        </ul>
                    </div>
                </label>                    
    </div>
</div>
<script type="text/javascript" src="http://static.blog.csdn.net/scripts/category.js"></script>  

从网上找了两种方法,效率差不多,这里贴出代码供大家参考

实体类Data

  1. public class Data {  
  2.   
  3.     private Long id ;  
  4.     private Long courseId ;  
  5.     private String content ;  
  6.   
  7.     public Long getId() {  
  8.         return id;  
  9.     }  
  10.   
  11.     public Data setId(Long id) {  
  12.         this.id = id;  
  13.         return this ;  
  14.     }  
  15.   
  16.     public Long getCourseId() {  
  17.         return courseId;  
  18.     }  
  19.   
  20.     public Data setCourseId(Long courseId) {  
  21.         this.courseId = courseId;  
  22.         return this ;  
  23.     }  
  24.   
  25.     public String getContent() {  
  26.         return content;  
  27.     }  
  28.   
  29.     public Data setContent(String content) {  
  30.         this.content = content;  
  31.         return this ;  
  32.     }  
  33.       
  34. }  


排序类

  1. <pre name="code" class="java">import java.lang.reflect.Method;  
  2. import java.util.ArrayList;  
  3. import java.util.Collection;  
  4. import java.util.HashMap;  
  5. import java.util.Iterator;  
  6. import java.util.List;  
  7. import java.util.Map;  
  8.   
  9. import com.framework.util.ParamUtils;  
  10.   
  11. public class CommonUtils {  
  12.   
  13.     /** 
  14.      * 分組依據接口,用于集合分組時,獲取分組依據 
  15.      *  
  16.      * @author ZhangLiKun 
  17.      * @title GroupBy 
  18.      * @date 2013-4-23 
  19.      */  
  20.     public interface GroupBy<T> {  
  21.         T groupby(Object obj);  
  22.     }  
  23.   
  24.     /** 
  25.      *  
  26.      * @param colls 
  27.      * @param gb 
  28.      * @return 
  29.      */  
  30.     public static final <T extends Comparable<T>, D> Map<T, List<D>> group(Collection<D> colls, GroupBy<T> gb) {  
  31.         if (colls == null || colls.isEmpty()) {  
  32.             System.out.println("分組集合不能為空!");  
  33.             return null;  
  34.         }  
  35.         if (gb == null) {  
  36.             System.out.println("分組依據接口不能為Null!");  
  37.             return null;  
  38.         }  
  39.         Iterator<D> iter = colls.iterator();  
  40.         Map<T, List<D>> map = new HashMap<T, List<D>>();  
  41.         while (iter.hasNext()) {  
  42.             D d = iter.next();  
  43.             T t = gb.groupby(d);  
  44.             if (map.containsKey(t)) {  
  45.                 map.get(t).add(d);  
  46.             } else {  
  47.                 List<D> list = new ArrayList<D>();  
  48.                 list.add(d);  
  49.                 map.put(t, list);  
  50.             }  
  51.         }  
  52.         return map;  
  53.     }  
  54.     /** 
  55.      * 将List<V>按照V的methodName方法返回值(返回值必须为K类型)分组,合入到Map<K, List<V>>中<br> 
  56.      * 要保证入参的method必须为V的某一个有返回值的方法,并且该返回值必须为K类型 
  57.      *  
  58.      * @param list 
  59.      *            待分组的列表 
  60.      * @param map 
  61.      *            存放分组后的map 
  62.      * @param clazz 
  63.      *            泛型V的类型 
  64.      * @param methodName 
  65.      *            方法名 
  66.      */  
  67.     public static <K, V> void listGroup2Map(List<V> list, Map<K, List<V>> map, Class<V> clazz, String methodName) {  
  68.         // 入参非法行校验  
  69.         if (null == list || null == map || null == clazz || !ParamUtils.chkString(methodName)) {  
  70.             System.out.print("CommonUtils.listGroup2Map 入参错误,list:" + list + " ;map:" + map + " ;clazz:" + clazz + " ;methodName:" + methodName);  
  71.             return;  
  72.         }  
  73.   
  74.         // 获取方法  
  75.         Method method = getMethodByName(clazz, methodName);  
  76.         // 非空判断  
  77.         if (null == method) {  
  78.             return;  
  79.         }  
  80.   
  81.         // 正式分组  
  82.         listGroup2Map(list, map, method);  
  83.     }  
  84.     /** 
  85.      * 根据类和方法名,获取方法对象 
  86.      *  
  87.      * @param clazz 
  88.      * @param methodName 
  89.      * @return 
  90.      */  
  91.     public static Method getMethodByName(Class<?> clazz, String methodName) {  
  92.         Method method = null;  
  93.         // 入参不能为空  
  94.         if (null == clazz || !ParamUtils.chkString(methodName)) {  
  95.             System.out.print("CommonUtils.getMethodByName 入参错误,clazz:" + clazz + " ;methodName:" + methodName);  
  96.             return method;  
  97.         }  
  98.   
  99.         try {  
  100.             method = clazz.getDeclaredMethod(methodName);  
  101.         } catch (Exception e) {  
  102.             System.out.print("类获取方法失败!");  
  103.         }  
  104.   
  105.         return method;  
  106.     }  
  107.     /** 
  108.      * 将List<V>按照V的某个方法返回值(返回值必须为K类型)分组,合入到Map<K, List<V>>中<br> 
  109.      * 要保证入参的method必须为V的某一个有返回值的方法,并且该返回值必须为K类型 
  110.      *  
  111.      * @param list 
  112.      *            待分组的列表 
  113.      * @param map 
  114.      *            存放分组后的map 
  115.      * @param method 
  116.      *            方法 
  117.      */  
  118.     @SuppressWarnings("unchecked")  
  119.     public static <K, V> void listGroup2Map(List<V> list, Map<K, List<V>> map, Method method) {  
  120.         // 入参非法行校验  
  121.         if (null == list || null == map || null == method) {  
  122.             System.out.print("CommonUtils.listGroup2Map 入参错误,list:" + list + " ;map:" + map + " ;method:" + method);  
  123.             return;  
  124.         }  
  125.   
  126.         try {  
  127.             // 开始分组  
  128.             Object key;  
  129.             List<V> listTmp;  
  130.             for (V val : list) {  
  131.                 key = method.invoke(val);  
  132.                 listTmp = map.get(key);  
  133.                 if (null == listTmp) {  
  134.                     listTmp = new ArrayList<V>();  
  135.                     map.put((K) key, listTmp);  
  136.                 }  
  137.                 listTmp.add(val);  
  138.             }  
  139.         } catch (Exception e) {  
  140.             System.out.print("分组失败!");  
  141.         }  
  142.     }  
  143.   
  144. }  





测试类

  1. import java.util.ArrayList;  
  2. import java.util.LinkedHashMap;  
  3. import java.util.List;  
  4. import java.util.Map;  
  5.   
  6. import com.framework.common.CommonUtils.GroupBy;  
  7.   
  8. public class Test {  
  9.   
  10.     /** 
  11.      * @param args 
  12.      */  
  13.     public static void main(String[] args) {  
  14.         // 准备一个集合  
  15.   
  16.         final int loop = 1000 * 1000;  
  17.         List<Data> list = new ArrayList<Data>(); // size=8 * loop  
  18.         for (int i = 0; i < loop; i++) {  
  19.             list.add(new Data().setId(1L).setCourseId(200010L).setContent("AAA"));  
  20.             list.add(new Data().setId(2L).setCourseId(200010L).setContent("BBB"));  
  21.             list.add(new Data().setId(3L).setCourseId(200011L).setContent("CCC"));  
  22.             list.add(new Data().setId(4L).setCourseId(200011L).setContent("DDD"));  
  23.             list.add(new Data().setId(5L).setCourseId(200010L).setContent("EEE"));  
  24.             list.add(new Data().setId(6L).setCourseId(200011L).setContent("FFF"));  
  25.             list.add(new Data().setId(7L).setCourseId(200010L).setContent("GGG"));  
  26.             list.add(new Data().setId(8L).setCourseId(200012L).setContent("HHH"));  
  27.         }  
  28.         // 进行分组 1  
  29.         long time = System.currentTimeMillis();  
  30.         Map<Long, List<Data>> map2 = new LinkedHashMap<Long, List<Data>>();  
  31.         CommonUtils.listGroup2Map(list, map2, Data.class"getId");// 输入方法名  
  32.           
  33.         long duration = System.currentTimeMillis() - time;  
  34.   
  35.         System.out.println("分组一执行:" + duration + "毫秒!");  
  36.   
  37.         // 分组二  
  38.         time = System.currentTimeMillis();  
  39.         Map<Long, List<Data>> map = CommonUtils.group(list, new GroupBy<Long>() {  
  40.             @Override  
  41.             public Long groupby(Object obj) {  
  42.                 Data d = (Data) obj;  
  43.                 return d.getCourseId(); // 分组依据为课程ID  
  44.             }  
  45.         });  
  46.   
  47.         duration = System.currentTimeMillis() - time;  
  48.   
  49.         System.out.println("分组二执行:" + duration + "毫秒!");  
  50.   
  51.     }  
  52.   
  53. }  


    <div id="digg" articleid="51500934">
        <dl id="btnDigg" class="digg digg_disable" onclick="btndigga();">
           
             <dt>顶</dt>
            <dd>1</dd>
        </dl>
       
          
        <dl id="btnBury" class="digg digg_disable" onclick="btnburya();">
          
              <dt>踩</dt>
            <dd>0</dd>               
        </dl>
        
    </div>
 <div class="tracking-ad" data-mod="popu_222"><a href="javascript:void(0);" target="_blank">&nbsp;</a>   </div>
<div class="tracking-ad" data-mod="popu_223"> <a href="javascript:void(0);" target="_blank">&nbsp;</a></div>
<script type="text/javascript">
            function btndigga() {
                $(".tracking-ad[data-mod='popu_222'] a").click();
            }
            function btnburya() {
                $(".tracking-ad[data-mod='popu_223'] a").click();
            }
        </script>
<div style="clear:both; height:10px;"></div>


    <div class="similar_article" style="">
            <h4>我的同类文章</h4>
            <div class="similar_c" style="margin:20px 0px 0px 0px">
                <div class="similar_c_t">
                            <label class="similar_cur">
                                <span style="cursor:pointer" onclick="GetCategoryArticles('1088196','yangxiaojun9238','foot','51500934');">JAVASE学习笔记<em>(22)</em></span>
                            </label>
                </div>
               
                <div class="similar_wrap tracking-ad" data-mod="popu_141" style="max-height:195px;">
                    <a href="http://blog.csdn.net" style="display:none" target="_blank">http://blog.csdn.net</a>
                    <ul class="similar_list fl"><li><em>•</em><a href="http://blog.csdn.net/yangxiaojun9238/article/details/52234786" id="foot_aritcle_52234786undefined6286303496263972" target="_blank" title="Thumbnails操作图片发红的问题解决">Thumbnails操作图片发红的问题解决</a><span>2016-08-17</span><label><i>阅读</i><b>342</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/yangxiaojun9238/article/details/8493088" id="foot_aritcle_8493088undefined4650400583232628" target="_blank" title="jsonlib json,xml,object 互转">jsonlib json,xml,object 互转</a><span>2013-01-11</span><label><i>阅读</i><b>1839</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/yangxiaojun9238/article/details/8250601" id="foot_aritcle_8250601undefined2811853968223248" target="_blank" title="JAVA批量修改文本文件内容,支持子目录">JAVA批量修改文本文件内容,支持子目录</a><span>2012-12-03</span><label><i>阅读</i><b>3593</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/yangxiaojun9238/article/details/7337293" id="foot_aritcle_7337293undefined09073856205329212" target="_blank" title="java和oracle日期互转">java和oracle日期互转</a><span>2012-03-09</span><label><i>阅读</i><b>5933</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/yangxiaojun9238/article/details/7324817" id="foot_aritcle_7324817undefined2789552682571841" target="_blank" title="对BigDecimal常用方法的归类">对BigDecimal常用方法的归类</a><span>2012-03-06</span><label><i>阅读</i><b>233</b></label></li> </ul>

                    <ul class="similar_list fr"><li><em>•</em><a href="http://blog.csdn.net/yangxiaojun9238/article/details/10171861" id="foot_aritcle_10171861undefined8352417148090185" target="_blank" title="poi excel 多级联动">poi excel 多级联动</a><span>2013-08-22</span><label><i>阅读</i><b>1818</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/yangxiaojun9238/article/details/8488199" id="foot_aritcle_8488199undefined14007191595192148" target="_blank" title="java获得网页源代码">java获得网页源代码</a><span>2013-01-10</span><label><i>阅读</i><b>338</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/yangxiaojun9238/article/details/7349548" id="foot_aritcle_7349548undefined16425431161098203" target="_blank" title="properties配置文件操作实例">properties配置文件操作实例</a><span>2012-03-13</span><label><i>阅读</i><b>543</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/yangxiaojun9238/article/details/7336762" id="foot_aritcle_7336762undefined8513629169728651" target="_blank" title="java与oracle日期格式">java与oracle日期格式</a><span>2012-03-09</span><label><i>阅读</i><b>1471</b></label></li> <li><em>•</em><a href="http://blog.csdn.net/yangxiaojun9238/article/details/7312426" id="foot_aritcle_7312426undefined10967811199926958" target="_blank" title="日期转换">日期转换</a><span>2012-03-02</span><label><i>阅读</i><b>174</b></label></li> </ul>
                <a href="http://blog.csdn.net/yangxiaojun9238/article/category/1088196" class="MoreArticle">更多文章</a></div>
            </div>
        </div>    
<script type="text/javascript">
    $(function () {
        GetCategoryArticles('1088196', 'yangxiaojun9238','foot','51500934');
    });
</script>
<div>
        <div class="J_adv" data-view="true" data-mod="ad_popu_205" data-mtp="43" data-order="114" data-con="ad_content_1900" style="width: 728px; height: 90px;"><script src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display:inline-block;width:728px;height:90px" data-ad-client="ca-pub-8990951720398508" data-ad-slot="8267689356/3776917242" data-adsbygoogle-status="done"><ins id="aswift_0_expand" style="display:inline-table;border:none;height:90px;margin:0;padding:0;position:relative;visibility:visible;width:728px;background-color:transparent"><ins id="aswift_0_anchor" style="display:block;border:none;height:90px;margin:0;padding:0;position:relative;visibility:visible;width:728px;background-color:transparent"><iframe width="728" height="90" frameborder="0" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" allowfullscreen="true" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&amp;&amp;s.handlers,h=H&amp;&amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;&amp;d&amp;&amp;(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else if(h.match){try{h=s.upd(h,i)}catch(e){}w.location.replace(h)}}" id="aswift_0" name="aswift_0" style="left:0;position:absolute;top:0;"></iframe></ins></ins></ins><script>(adsbygoogle=window.adsbygoogle || []).push({});</script></div> 
 </div>

参考知识库

img

Java SE知识库

img

Java EE知识库

img

Java 知识库

img

软件测试知识库

 <dt><span>猜你在找</span></dt>    





<div id="adCollege" style="width: 42%;float: left;"> 
    <script src="http://csdnimg.cn/jobreco/job_reco.js" type="text/javascript"></script> 
    <script type="text/javascript">
        csdn.position.showEdu({
            sourceType: "blog",
            searchType: "detail",
            searchKey: "51500934",
            username: "",
            recordcount: "5",
            containerId: "adCollege" //容器DIV的id。 
        });
    </script> 
<div class="tracking-ad" data-mod="popu_84"><dd style="background:url(http://static.blog.csdn.net/skin/default/images/blog-dot-red3.gif) no-repeat 0 10px; white-space: nowrap;"><a href="http://edu.csdn.net/course/detail/2981" title="java语言从入门到精通2016+项目实训" strategy="v4:content" target="_blank">java语言从入门到精通2016+项目实训</a></dd><dd style="background:url(http://static.blog.csdn.net/skin/default/images/blog-dot-red3.gif) no-repeat 0 10px; white-space: nowrap;"><a href="http://edu.csdn.net/course/detail/3767" title="JavaScript面向对象的编程视频课程第二季 对象" strategy="v4:content" target="_blank">JavaScript面向对象的编程视频课程第二季 对象</a></dd><dd style="background:url(http://static.blog.csdn.net/skin/default/images/blog-dot-red3.gif) no-repeat 0 10px; white-space: nowrap;"><a href="http://edu.csdn.net/course/detail/765" title="深入浅出Java的反射" strategy="v4:content" target="_blank">深入浅出Java的反射</a></dd><dd style="background:url(http://static.blog.csdn.net/skin/default/images/blog-dot-red3.gif) no-repeat 0 10px; white-space: nowrap;"><a href="http://edu.csdn.net/course/detail/3577" title="java核心技术精讲" strategy="v4:content" target="_blank">java核心技术精讲</a></dd><dd style="background:url(http://static.blog.csdn.net/skin/default/images/blog-dot-red3.gif) no-repeat 0 10px; white-space: nowrap;"><a href="http://edu.csdn.net/course/detail/395" title="零基础学Java系列从入门到精通" strategy="v4:content" target="_blank">零基础学Java系列从入门到精通</a></dd></div></div>  


 <div id="res" data-mod="popu_36" class="tracking-ad" style="width: 42%; float: left; margin-right: 30px; display: block;"><dd style="background:url(http://static.blog.csdn.net/skin/default/images/blog-dot-red3.gif) no-repeat 0 10px;"><a href="http://blog.csdn.net/awj321000/article/details/25862015" title="HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档" strategy="SearchAlgorithm" target="_blank">HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档</a></dd><dd style="background:url(http://static.blog.csdn.net/skin/default/images/blog-dot-red3.gif) no-repeat 0 10px;"><a href="http://blog.csdn.net/guomei/article/details/46689569" title="Java 运行时监控第 3 部分 监控应用程序生态系统的性能与可用性" strategy="SearchAlgorithm" target="_blank">Java 运行时监控第 3 部分 监控应用程序生态系统的性能与可用性</a></dd><dd style="background:url(http://static.blog.csdn.net/skin/default/images/blog-dot-red3.gif) no-repeat 0 10px;"><a href="http://blog.csdn.net/u010185526/article/details/38229803" title="Java 运行时监控第 3 部分 监控应用程序生态系统的性能与可用性" strategy="SearchAlgorithm" target="_blank">Java 运行时监控第 3 部分 监控应用程序生态系统的性能与可用性</a></dd><dd style="background:url(http://static.blog.csdn.net/skin/default/images/blog-dot-red3.gif) no-repeat 0 10px;"><a href="http://blog.csdn.net/allenjay11/article/details/53331855" title="JAVA 笔记三 从源码深入浅出集合框架" strategy="SearchAlgorithm" target="_blank">JAVA 笔记三 从源码深入浅出集合框架</a></dd><dd style="background:url(http://static.blog.csdn.net/skin/default/images/blog-dot-red3.gif) no-repeat 0 10px;"><a href="http://blog.csdn.net/matry521/article/details/52210139" title="Java面试题整理" strategy="SearchAlgorithm" target="_blank">Java面试题整理</a></dd></div>
<div id="ad_cen">        
<!-- 广告位开始 -->
<div class="J_adv" data-view="true" data-mod="ad_popu_72" data-mtp="62" data-order="40" data-con="ad_content_2072"><script id="popuLayer_js_q" src="http://ads.csdn.net/js/popuLayer.js" defer="" type="text/javascript"></script><div id="layerd" style="position: fixed; bottom: 0px; right: 0px; line-height: 0px; z-index: 1000; width: 300px; height: 278px; display: none;"><div class="J_close layer_close" style="display:;background-color:#efefef;padding:0px;color:#333;font:12px/24px Helvetica,Tahoma,Arial,sans-serif;text-align:right;">关闭</div><!-- 广告占位容器 --><div id="cpro_u2895327"><iframe id="iframeu2895327_0" src="http://pos.baidu.com/kcpm?rdid=2895327&amp;dc=3&amp;di=u2895327&amp;dri=0&amp;dis=0&amp;dai=1&amp;ps=908x1049&amp;dcb=___adblockplus&amp;dtm=HTML_POST&amp;dvi=0.0&amp;dci=-1&amp;dpt=none&amp;tsr=0&amp;tpr=1487658161699&amp;ti=JAVA%20%E9%9B%86%E5%90%88%20List%20%E5%88%86%E7%BB%84%E7%9A%84%E4%B8%A4%E7%A7%8D%E6%96%B9%E6%B3%95%20-%20yangxiaojun9238%E7%9A%84%E4%B8%93%E6%A0%8F%20-%20%E5%8D%9A%E5%AE%A2%E9%A2%91%E9%81%93%20-%20CSDN.NET&amp;ari=2&amp;dbv=2&amp;drs=3&amp;pcs=1349x662&amp;pss=1349x6895&amp;cfv=0&amp;cpl=5&amp;chi=1&amp;cce=true&amp;cec=UTF-8&amp;tlm=1487658161&amp;rw=662&amp;ltu=http%3A%2F%2Fblog.csdn.net%2Fyangxiaojun9238%2Farticle%2Fdetails%2F51500934&amp;ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DpC3Lxw1Xt3JfbmAMHgh7oVjYwzMUN9sFs1ZAaQycQmmyj-D8goMg9RmG5vmVZoWnRA2o6P11em6uAlmJh6nid5-l3_Y_9X_WjZ1eejC6aSi%26wd%3D%26eqid%3De542833a000555170000000358abbc5c&amp;ecd=1&amp;par=1366x768&amp;pis=-1x-1&amp;ccd=24&amp;cja=false&amp;cmi=7&amp;col=zh-CN&amp;cdo=-1&amp;sr=1366x768&amp;tcn=1487658162&amp;qn=b497df28aa28c99d&amp;tt=1487658161683.20.21.24" width="300" height="250" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" style="border:0; vertical-align:bottom;margin:0;" allowtransparency="true"></iframe></div></div><script>  document.getElementById('popuLayer_js_q').onload=function(){      var styObjd=styObj={width:'300px','height':parseInt(250)+28};window.CSDN.Layer.PopuLayer('#layerd',{storageName:'layerd',styleObj:styObjd,total:50,expoire:1000*60});  }</script><!-- 投放代码 --><script type="text/javascript">   /*服务器频道首页置顶Banner960*90,创建于2014-7-3*/    (window.cproArray = window.cproArray || []).push({        id: 'u2895327'      });  </script>  <script src="http://cpro.baidustatic.com/cpro/ui/c.js" type="text/javascript"></script></div>
<!-- 广告位结束 -->
查看评论

  暂无评论

* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
<div id="ad_bot">
</div>
    <a id="quick-reply" class="btn btn-top q-reply" title="快速回复" style="display:none;">
        <img src="http://static.blog.csdn.net/images/blog-icon-reply.png" alt="快速回复">
    </a>    
<a id="d-top-a" class="btn btn-top backtop" style="display: none;" title="返回顶部" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_huidaodingbu'])">         
     <img src="http://static.blog.csdn.net/images/top.png" alt="TOP">
</a>

                    <div class="clear">
                    </div>
                </div>

推荐阅读