最近刚学完集合框架,想把自己的一些学习笔记与想法整理一下,所以本篇博客或许会有一些内容写的不严谨或者不正确,还请大神指出。初学者对于本篇博客只建议作为参考,欢迎留言共同学习。

  之前有介绍集合框架的体系概念(http://www.cnblogs.com/yjboke/p/8761195.html),本篇介绍一下集合扩展内容:Collections工具类的使用;可变参数;集合数组相互转换方法;


Collection与Collections的区别:

Collection是java.util下的一个接口,是List、Set等接口的父接口,

Collections是针对集合类的一个帮助类,提供了一系列静态方法实现对集合的搜索、排序、同步等操作,接下来将基本用法进行简单介绍:

一、搜索及替换(主要针对于Collection相关接口):

  max(Collection c);  返回最大值;

  min(Collection c);   返回最小值;

  fill(List list,Object obj);将list集合中所有元素替换为指定元素(obj);

  frequency(Collection Object o);返回指定集合中指定对象出现的次数;

  replaceAll(list,Object obj,Object newObj);将指定元素替换为新元素;

  copy(List list1,List list2);将集合List2中的元素全部复制到list1中,并覆盖其相应索引的元素。

  binarySearch(List list ;Object obj);根据元素找下标,需先用sort进行排序,如果没有该元素返回负值);

二、排序(主要针对于List相关接口):

  sort(List list);对list里的元素进行自然升序排序;

  reverse(List list);反转排序;

  shuffle(List list);对集合中的元素进行随机排序;

  swap(List list,int i1,int i2);交换两个下标的位置;

  rotate(List list,Int distance);将所有元素向右移位指定长度,如distance等于size则不变。

三、同步

  synchronizedCollection 返回指定的Collection支持的同步的collection;

  也可应用于Set、Map、List。

四、将集合设置为不可变

  emptyList();返回一个空的不可变得集合对象;

  singletonList();返回一个只包含指定对象的,不可变的集合对象;

  unmodiflableList();返回指定集合对象的不可变视图;

五、比较器

Comparator; 实现Comparator接口,复写compare方法,可自定义比较器。

-------------------------------------------------------------

以下将挑几个方法进行代码实例:

首先是普通的排序或替换方法的代码:

public static void main(String[] args) {
sortDemo();
StrSortDemo();
} public static void sortDemo() {
//定义集合并添加元素
List<String> list = new ArrayList<String>();
list.add("abc");
list.add("aaa");
list.add("bcde");
list.add("bc");
//原顺序输出
System.out.println(list); //输出结果为:[abc, aaa, bcde, bc] //使用sort方法排序
Collections.sort(list);
//输出排序后的集合
System.out.println(list); //输出结果为:[aaa, abc, bc, bcde] //根据元素“bcde”找下标
int i = Collections.binarySearch(list, "bcde");
System.out.println(i); //输出结果为:3 //反转排序
Collections.reverse(list);
System.out.println(list); //输出结果为:[bcde, bc, abc, aaa] //交换下标位置
Collections.swap(list, 2, 3);
System.out.println(list); //输出结果为:[bcde, bc, aaa, abc] //输出最大值
String max = Collections.max(list);
System.out.println(max); //输出结果为:bcde //将集合中所有元素都替换为over
Collections.fill(list, "over");
System.out.println(list); //输出结果为:[over, over, over, over] }

  接下来是复写比较器方法,比较元素长度长短:

class StrComparator implements Comparator<String>{

    public int compare(String s1, String s2) {

        if(s1.length() > s2.length()) {
return 1;
}
if(s1.length() == s2.length()) {
//如果字符串长度相同则比较内容
return s1.compareTo(s2);
}
return -1;
} }

  加入长度比较器之后的排序方法:

    public static void StrSortDemo() {
//定义集合并添加元素
List<String> list = new ArrayList<String>();
list.add("abc");
list.add("aaaaa");
list.add("bcde");
list.add("bc"); //根据字符串长度进行排序
Collections.sort(list,new StrComparator());
System.out.println(list); //输出结果为:[bc, abc, bcde, aaaaa] String max = Collections.max(list,new StrComparator());
System.out.println(max); //输出结果为:aaaaa
}

以上。

PS:如果不严谨之处还请提出,共同学习。

浅谈集合框架五——集合框架扩展:Collections工具类的使用,自定义比较器的更多相关文章

  1. (Set, Map, Collections工具类)JAVA集合框架二

    Java集合框架部分细节总结二 Set 实现类:HashSet,TreeSet HashSet 基于HashCode计算元素存放位置,当计算得出哈希码相同时,会调用equals判断是否相同,相同则拒绝 ...

  2. Java集合框架:Collections工具类

    java.util.Collections工具类提供非常多实用的方法.使得程序员操作集合类的时候更加的方便easy,这些方法都是静态的. 整个Collections工具类源代码几乎相同有4000行.我 ...

  3. Java:集合,Collections工具类用法

    Collections工具类提供了大量针对Collection/Map的操作,总体可分为四类,都为静态(static)方法: 1. 排序操作(主要针对List接口相关) reverse(List li ...

  4. Java精选笔记_集合概述(Collection接口、Collections工具类、Arrays工具类)

    集合概述 集合有时又称为容器,简单地说,它是一个对象,能将具有相同性质的多个元素汇聚成一个整体.集合被用于存储.获取.操纵和传输聚合的数据. 使用集合的技巧 看到Array就是数组结构,有角标,查询速 ...

  5. LinkedHashSet、Map、Map接口HashMap、Hashtable,TreeSet、TreeMap、如何选择使用集合实现类,Collections工具类

    一.Set接口实现类LinkedHashSet 实现继承图: 1.LinkedHashSet的全面说明 1) LinkedHashSet是 HashSet的子类 2) LinkedHashSet底层是 ...

  6. Map集合、HashMap集合、LinkedHashMap集合、Hashtable集合、Collections工具类和模拟斗地主洗牌和发牌

    1.Map集合概述和特点 * A:Map接口概述  * 查看API可以知道:          * 将键映射到值的对象          * 一个映射不能包含重复的键          * 每个键最多 ...

  7. day07(Set接口,HashSet类,hashcoad(),Collections工具类,Map集合)

    Set接口 set接口的实现类特点 1.无序(取出来的顺序和存进去的数据的顺序不一致) 2.唯一(数据不能存相同的) 底层是用Map集合写的 HashSet类  实现了  set接口       唯一 ...

  8. Java集合——Collections工具类

    Java集合——Collections工具类 摘要:本文主要学习了Collections工具类的常用方法. 概述 Collections工具类主要用来操作集合类,比如List和Set. 常用操作 排序 ...

  9. Collections工具类、Map集合、HashMap、Hashtable(十八)

    1.Map集合概述和特点 * A:Map接口概述 * 去重复, * 查看API可以知道, * 将键映射到值的对象, * 一个映射不能包含重复的键, * 每个键最多只能映射到一个值.* B:Map接口和 ...

随机推荐

  1. 2018-8-10-win10-UWP-修改密码框文字水平

    title author date CreateTime categories win10 UWP 修改密码框文字水平 lindexi 2018-08-10 19:17:19 +0800 2018-2 ...

  2. LintCode_111 爬楼梯

    题目 假设你正在爬楼梯,需要n步你才能到达顶部.但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部? 比如n=3,中不同的方法 返回 3 1 2 3 5 8 13... step[2] = ...

  3. Promise https://www.liaoxuefeng.com/wiki/1022910821149312/1023024413276544

    在JavaScript的世界中,所有代码都是单线程执行的. 由于这个“缺陷”,导致JavaScript的所有网络操作,浏览器事件,都必须是异步执行.异步执行可以用回调函数实现: function ca ...

  4. 大数据技术之Flume

    第1章 概述 1.1 Flume定义 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统.Flume基于流式架构,灵活简单. 1.2 Flume组成架构 ...

  5. SQLserver与Mysql的区别

    参考链接:https://www.cnblogs.com/qingqing-919/p/8417773.html

  6. oracle终止数据库Abort

    中止数据库实例, 立即关闭 异常关闭是最主动的关闭类型,并且有如下这些特征: 从shutdown abort命令发布起,禁止建立任何新的oracle连接 当前正在运行的sql语句被终止,无论他们处于什 ...

  7. HTML之HTML标签

    前端的三把利器:                      (1)HTML就像一个赤裸裸的人                      (2)css就好比一件衣服                   ...

  8. hdu5289 RMQ+二分

    RMQ预处理最大值,最小值,然后对于每一点,二分可能满足的区间长度,长度-1就是该店开始的区间满足的个数. #include<stdio.h> #include<string.h&g ...

  9. SED总结, mac上要加备份文件名,sort命令和对中文的处理

    使用sed批量改文件名 Sed批量去拓展名 |- dev.gb.conll06.raw |- test.gb.conll06.raw |- train.gb.conll06.raw 想要去掉其中的后缀 ...

  10. IDI Open 2016 H 字符串模拟题

    H - Palindrome Names 题意:给定一个字符串,每次可以向末尾添加一个字符或者更改一个字符.求使得字符串为回文串(从前往后和从后往前读一样)所花费的最小步数. 题解: 看来需要多思考啊 ...