A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 施大勇 中级黑马   /  2013-8-2 17:43  /  896 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 施大勇 于 2013-9-18 15:42 编辑

import java.util.*;
class ListTest1
{
        /*
        在主方法中将集合变成数组,并清空集合,将排序好的数组再赋给集合,在主方法中打印集合,完成了集合中对象的排序。
        */
        public static void main(String args[]){
                List<Integer>list=new ArrayList<Integer>();
                list.add(1);
                list.add(9);
                list.add(5);
                list.add(3);
                printList(list);


                Integer[] intarr=list.toArray(new Integer[list.size()]);
                Arrays.sort(intarr);
                list.clear();
                list=Arrays.asList(intarr);
                printList(list);
        }
        public static void printList(List <Integer> list){
                Iterator<Integer>it=list.iterator();
                while (it.hasNext())
                {
                        Integer i=it.next();
                        System.out.print(i+"\t");
                }
                System.out.println();
        }
}


class ListTest2
{
        /*
        通过方法将集合中的对象排序,在主方法中打印排序后的集合,完成了集合排序任务。
        */
        public static void main(String args[]){
                List<Integer>list=new ArrayList<Integer>();
                list.add(1);
                list.add(9);
                list.add(5);
                list.add(3);
                printList(list);

                listSort(list);
                printList(list);

        }
        /*在方法中操作集合通过for循环将数组中的元素添加到集合中,可以完成任务。*/
        public static void listSort(List<Integer> list){/*引用传递成功。*/
                Integer[] intarr=list.toArray(new Integer[list.size()]);
                Arrays.sort(intarr);
                list.clear();
                for (int i=0;i<intarr.length ;i++ )
                {
                        list.add(intarr);
                }/*这里的list操作保存结果能够到达主方法。*/
        }
        public static void printList(List <Integer> list){
                Iterator<Integer>it=list.iterator();
                while (it.hasNext())
                {
                        Integer i=it.next();
                        System.out.print(i+"\t");
                }
                System.out.println();
        }
}

/*通过方法操作集合,但集合操作后并没有结果保存到主方法中的集合中。为什么?*/
class ListTest3
{
        public static void main(String args[]){
                List<Integer>list=new ArrayList<Integer>();
                list.add(1);
                list.add(9);
                list.add(5);
                list.add(3);
                printList(list);

                listSort(list);
                printList(list);

        }

        public static void listSort(List<Integer> list){/*这里的操作结果没有传回主方法。*/
                Integer[] intarr=list.toArray(new Integer[list.size()]);
                Arrays.sort(intarr);
                list.clear();

                list=Arrays.asList(intarr);
                //printList(list);
        }
        public static void printList(List <Integer> list){
                Iterator<Integer>it=list.iterator();
                while (it.hasNext())
                {
                        Integer i=it.next();
                        System.out.print(i+"\t");
                }
                System.out.println();
        }
}
/*为什么引用传递功能在第三种方案中不能通过呢?求大侠指点。*/

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

1 个回复

倒序浏览
跟那个clear()方法有关了。这是把clear()方法注释掉的结果。
再来看下不注释的结果。

01、
02、
03、

从这些可以看出了和分析了!

其实有些东西不好解释的话的,可以借助eclipse的工具来进行debug设好断点,一步一步F6来走!慢慢摸索。(有点像看图说话了{:soso_e101:})

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马