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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 IT军犬 于 2016-8-17 21:39 编辑

入学视频Day16作业题4 小白蒙逼了
public static void main(String[] args) {
                List<String> list1 = new ArrayList<>();
                list1.add("b");
                list1.add("f");
                list1.add("e");
                list1.add("c");
                list1.add("a");
                list1.add("d");
                sort1(list1);
                System.out.println(list1);        // 对集合中添加的元素排序,输出a, b, c, d, e, f


小白我想了个如此操蛋的方法 还失败了 输出还是bfecab求大神们解答
public static void sort1(List<String> l) {
                String[] arr = l.toArray(new String[l.size()]);
                String s = "";
                for (String string : arr) {
                        s = s +string;
                }
                char[] arr1 = s.toCharArray();
                Arrays.sort(arr1);
                for (int i = 0;i < arr1.length;i++) {
                        arr = arr.valueOf(arr1);
                }
                l = Arrays.asList(arr);
        }
又发现问题了,Day16还没讲Collections 和比较器,如果不用这两个类,还有其他方法么?


8 个回复

倒序浏览
        public static void sort1(List<String> l) {
               
                //集合排序工具传入一个比较器
               
                Collections.sort(l, new Comparator<String>() {

                        @Override
                        public int compare(String s1, String s2) {
                                //使用String中的compareTo方法比较参数
                                /*
                                 * 返回值大于零s1大于s2
                                 * 返回值为零s1等于s2
                                 * 返回值小于零s1小于s2
                                 * */
                                return s1.compareTo(s2);
                        }
                });
        }

//使用上面这个方法试试
回复 使用道具 举报
[Java] 纯文本查看 复制代码
	public static void sort1(List<String> list) {
		
		//集合排序工具传入一个比较器
		for (int i = 0; i < list.size() - 1; i++) {
			int indexMax = i;
			for (int j = i + 1; j < list.size(); j++) {
				String s1 = list.get(i);
				String s2 = list.get(j);
				char c1 = s1.toCharArray()[0];
				char c2 = s2.toCharArray()[0];
				if (c1 > c2) {
					indexMax = j;
				}
			}
			//交换位置
			change(list, i , indexMax);
		}
	}
	public static void change(List<String> list, int i, int indexMax) {
		String temp = list.remove(indexMax);
		list.add(indexMax - 1, list.get(i));
		list.remove(i);
		list.add(i, temp);
	}
回复 使用道具 举报
本帖最后由 IT军犬 于 2016-8-17 12:07 编辑
小小丶白 发表于 2016-8-17 10:04
public static void sort1(List l) {
               
                //集合排序工具传入一个比较器

collection里有sort么?
C:\Users\Administrator\Desktop

无标题.png (223.21 KB, 下载次数: 13)

无标题.png

无标题.png (223.21 KB, 下载次数: 14)

无标题.png
回复 使用道具 举报
[Java] 纯文本查看 复制代码
public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("b");
		list.add("f");
		list.add("e");
		list.add("c");
		list.add("a");
		list.add("d");
		Collections.sort(list);  //Collections工具类直接排序
		System.out.println(list);//[a, b, c, d, e, f]
		
		//要是不要[],继续往下走,做字符串拼接
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < list.size(); i++) {
			if (i == list.size() - 1) {
				sb.append(list.get(i));
			}else{
				sb.append(list.get(i)+", ");
			}
		}
		System.out.println(sb);//a, b, c, d, e, f


	}

上面兄弟的提到的比较器排序也是可以的
回复 使用道具 举报
IT军犬 发表于 2016-8-17 11:54
collection里有sort么?

Collection 和 Collections是两码事。对于你这道题来说,不自定义比较器就可以实现,如果是对一系列对象针对特定要求排序,就得用比较器。
回复 使用道具 举报
水月灬清影 发表于 2016-8-17 12:10
Collection 和 Collections是两码事。对于你这道题来说,不自定义比较器就可以实现,如果是对一系列对象 ...

搜噶,终于找到问题在哪了
回复 使用道具 举报
水月灬清影 发表于 2016-8-17 12:10
Collection 和 Collections是两码事。对于你这道题来说,不自定义比较器就可以实现,如果是对一系列对象 ...

搜噶,终于找到问题在哪了
回复 使用道具 举报
talons 初级黑马 2016-8-17 20:25:23
9#
Collection是所有单列集合的父接口,而Collections是一个提供实现Collection接口的对象的一些方法的一个工具类。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马