浅谈集合框架五——集合框架扩展:Collections工具类的使用,自定义比较器
最近刚学完集合框架,想把自己的一些学习笔记与想法整理一下,所以本篇博客或许会有一些内容写的不严谨或者不正确,还请大神指出。初学者对于本篇博客只建议作为参考,欢迎留言共同学习。
之前有介绍集合框架的体系概念(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工具类的使用,自定义比较器的更多相关文章
- (Set, Map, Collections工具类)JAVA集合框架二
Java集合框架部分细节总结二 Set 实现类:HashSet,TreeSet HashSet 基于HashCode计算元素存放位置,当计算得出哈希码相同时,会调用equals判断是否相同,相同则拒绝 ...
- Java集合框架:Collections工具类
java.util.Collections工具类提供非常多实用的方法.使得程序员操作集合类的时候更加的方便easy,这些方法都是静态的. 整个Collections工具类源代码几乎相同有4000行.我 ...
- Java:集合,Collections工具类用法
Collections工具类提供了大量针对Collection/Map的操作,总体可分为四类,都为静态(static)方法: 1. 排序操作(主要针对List接口相关) reverse(List li ...
- Java精选笔记_集合概述(Collection接口、Collections工具类、Arrays工具类)
集合概述 集合有时又称为容器,简单地说,它是一个对象,能将具有相同性质的多个元素汇聚成一个整体.集合被用于存储.获取.操纵和传输聚合的数据. 使用集合的技巧 看到Array就是数组结构,有角标,查询速 ...
- LinkedHashSet、Map、Map接口HashMap、Hashtable,TreeSet、TreeMap、如何选择使用集合实现类,Collections工具类
一.Set接口实现类LinkedHashSet 实现继承图: 1.LinkedHashSet的全面说明 1) LinkedHashSet是 HashSet的子类 2) LinkedHashSet底层是 ...
- Map集合、HashMap集合、LinkedHashMap集合、Hashtable集合、Collections工具类和模拟斗地主洗牌和发牌
1.Map集合概述和特点 * A:Map接口概述 * 查看API可以知道: * 将键映射到值的对象 * 一个映射不能包含重复的键 * 每个键最多 ...
- day07(Set接口,HashSet类,hashcoad(),Collections工具类,Map集合)
Set接口 set接口的实现类特点 1.无序(取出来的顺序和存进去的数据的顺序不一致) 2.唯一(数据不能存相同的) 底层是用Map集合写的 HashSet类 实现了 set接口 唯一 ...
- Java集合——Collections工具类
Java集合——Collections工具类 摘要:本文主要学习了Collections工具类的常用方法. 概述 Collections工具类主要用来操作集合类,比如List和Set. 常用操作 排序 ...
- Collections工具类、Map集合、HashMap、Hashtable(十八)
1.Map集合概述和特点 * A:Map接口概述 * 去重复, * 查看API可以知道, * 将键映射到值的对象, * 一个映射不能包含重复的键, * 每个键最多只能映射到一个值.* B:Map接口和 ...
随机推荐
- python学习笔记10--协程、IO、IO多路复用
本节内容 一.协程 1.1.协程概念 1.2.greenlet 1.3.Gevent 1.4.协程之爬虫 1.5.协程之socket 二.论事件驱动与异步IO 三.IO 3.1.概念说明 3.2.IO ...
- 虚幻UE4的后处理特效介绍 http://www.52vr.com/thread-31215-1-1.html
转载 虚幻UE4提供了后处理特效的功能,可以实现景深,光溢出,色调调整,饱和度等等.要使用虚幻4的后处理,就一定要用到PostProcessVolumn,这是一种特殊的体积,可以放置在场景中的任何位置 ...
- ubuntu上设置截图快捷键
ubuntu自带的截图工具感觉能够满足基本的截图功能,可以不必安装另外的截图软件. 一般用到的截图类型有三种:全屏.当前活动窗口.自定义区域,其中自定义区域截图是最灵活也是我们用的最多的方式.在ubu ...
- 云计算、大数据、编程语言学习指南下载,100+技术课程免费学!这份诚意满满的新年技术大礼包,你Get了吗?
开发者认证.云学院.技术社群,更多精彩,尽在开发者会场 近年来,新技术发展迅速.互联网行业持续高速增长,平均薪资水平持续提升,互联网技术学习已俨然成为学生.在职人员都感兴趣的“业余项目”. 阿里云大学 ...
- 【机器学习PAI实战】—— 玩转人工智能之你最喜欢哪个男生?
摘要: 分类问题是生活中最常遇到的问题之一.普通人在做出选择之前,可能会犹豫不决,但对机器而言,则是唯一必选的问题.我们可以通过算法生成模型去帮助我们快速的做出选择,而且保证误差最小.充足的样本,合适 ...
- 世界名校网络课程大盘点,美国大学CS专业十三大研究方向,世界50所知名大学提供开放课程
世界名校网络课程大盘点 加州大学伯克利分校http://webcast.berkeley.edu/ 加州大学伯克利分校与斯坦福大学. 麻省理工学院等一同被誉为美国工程科技界的学术 领袖,其常年位居 ...
- node服务器的配置
安装node 安装pm2 http://blog.csdn.net/chenlinIT/article/details/73343793 安装mongodbhttp://zixuephp.net/ar ...
- 微服务开源生态报告 No.5
「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源项目的最新进展. 社区动态包括,但不限于:版本发布.人员动态.项目动态和规划.培训和活动. 非常欢迎国内其他微服 ...
- SPARK-SQL内置函数之字符串函数
转载请注明转自:http://www.cnblogs.com/feiyumo/p/8763186.html 1.concat对于字符串进行拼接 concat(str1, str2, ..., strN ...
- shell脚本批量杀死进程
使用Ubuntu系统时常会遇到机器卡死的情况(人生最大的痛苦),所有的键都没有用,只好强制关机,我似乎对此已经'乐此不疲了'. 看到又神牛说: 可以在tty里面把相关的进程杀死,之后就正常.(到目前我 ...