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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liupanpan 中级黑马   /  2015-9-30 22:45  /  466 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.liupanpan.test;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.TreeSet;

public class Test4 {

        /**
         * 需求: 在一个集合中存储了无序并且重复的字符串,定义一个方法,让其有序(字典顺序),而且还不能去除重复
         * 分析
         * 1,需要定义一个ArrayList集合并向集合中添加String类型的元素
         * 2,定义一个方法,将集合中无序的元素排序并且保留重复元素
         */
        public static void main(String[] args) {
                ArrayList<String> list = new ArrayList<String>();
                list.add("heima");
                list.add("heima");
                list.add("a");
                list.add("a");
                list.add("xuexi");
                list.add("xuexi");
                list.add("java");
                list.add("java");
                sort(list);
                System.out.println(list);
        }
/*定义一个方法
* 1,在方法中创建一个TreeSet集合,因为TreeSet自身的比较功能会删除重复的元素,而需求是保留重复的元素,所以需要外在的比较器
* 2,将ArrayList集合中的元素全部添加到TreeSet集合中
* 3,清除ArrayList集合中的元素
* 4,将TreeSet集合中的元素添加到ArrayList集合中
* 5,打印ArrayList集合
*/
        public static void sort(ArrayList<String> list) {
                        TreeSet<String> ts = new TreeSet<String>(new Comparator<String>() {

                        @Override
                        public int compare(String s1, String s2) {
                                int num =s1.compareTo(s2);//s1是调用的的元素,s2是集合中的元素
                                return  num == 0? 1:num;
                               
                        }
                       
                       
                });
                        ts.addAll(list);
                        list.clear();
                        list.addAll(ts);
        }

}
/*所涉及的知识点
* 1,TreeSet是Set接口的另一个实现类,他的内部采用自平衡的排序二叉树来储存元素,这样的结构可以保证TreeSet集合中没有重复的元素,并且可以对元素进行排序
* 2,compareTo()方法对集合中的元素比较,是Comparable接口中定义的,因此要想对集合中的元素进行排序,就必须实现Comparable接口,重写compareTo()方法
* 3,匿名内部类,格式new 类名或者接口名(){
*                                                         重写方法;
*                                                 };
*/


1 个回复

倒序浏览
总结的不错,可以作为日记了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马