java集合框架03
Collections工具类的使用
public class News implements Comparable {
private int id; //新闻编号
private String title; //新闻标题
@Override
public String toString() {
return "新闻 [编号=" + id + ", 标题=" + title + "]";
}
public News() { //无参构造
super();
}
public News(int id, String title) { //带参构造
super();
this.id = id;
this.title = title;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
//重写 排序的规则 升序
@Override
public int compareTo(Object o) {
News news=(News) o;
if (news.getId()==this.id) {
return 0;
}else if (news.getId()<this.id) {
return 1; // 降序 return -1;
}else {
return -1; // 降序 return 1;
}
}
}
创建测试类
public class CollectionsTest {
public static void main(String[] args) {
/*
* 操作集合的工具类Collections
*
*/
//创建一个集合
List<String> list=new ArrayList<String>();
list.add("b");
list.add("d");
list.add("c");
list.add("a");
System.out.println("没有排序====》"+list); //插入时候的顺序
//对集合进行随机排序
Collections.shuffle(list);
//开奖号码 136 顺序必须对 631不对
System.out.println("随机排序====》"+list);
//按照字母的升序排列
Collections.sort(list);
System.out.println("升序====》"+list);
//降序 也是必须在升序之后
Collections.reverse(list);
System.out.println("降序====》"+list);
//查询 "b"在集合中的位置 必须先升序 排列之后再查询
Collections.sort(list);
System.out.println(Collections.binarySearch(list, "a"));
System.out.println("****************************");
List<News> news=new ArrayList<News>(); //想实现对象的排序
news.add(new News(3, "新闻3"));
news.add(new News(1, "新闻1"));
news.add(new News(4, "新闻4"));
news.add(new News(2, "新闻2"));
for (News news2 : news) {
System.out.println(news2);
}
/*
* 如果News没有重写Comparable接口中的compareTo()是编译报错的!
* 我们必须重写compareTo() 定义规则
*/
Collections.sort(news);
System.out.println("对象排序之后.........");
for (News news2 : news) {
System.out.println(news2);
}
}
@Test
public void test1(){
//通过String类中的split()把字符串转换成字符串数组
String[] str1="a b c d d d".split(" ");
//把数组转换成集合
List<String> asList = Arrays.asList(str1);
System.out.println(asList);
String[] str2="c d".split(" ");
List<String> asList2= Arrays.asList(str2);
//最后一次出现的位置
System.out.println(Collections.lastIndexOfSubList(asList, asList2));
//首次出现的位置
System.out.println(Collections.indexOfSubList(asList, asList2));
}
@Test
public void test2(){
String[] str1="a b c d e f".split(" ");
//把数组转换成集合
List<String> list = Arrays.asList(str1);
System.out.println(list);
//集合中的元素向后移distance个位置,之后被覆盖的元素循环前移
Collections.rotate(list, 2);
System.out.println(list);
}
}


3.map遍历的效率比较
@Test
public void test(){
Map<String, Object> map=new HashMap<String, Object>();
for (int i = 0; i <1000000; i++) {
map.put("key"+i, "value"+i);
}
//获取当前毫秒数
Long a= System.currentTimeMillis();
//遍历map 首先获取所有key的集合
Set<String> set = map.keySet();
for (String key : set) {
map.get(key); //根据key取得value
}
//获取当前毫秒数
Long b= System.currentTimeMillis();
System.out.println("使用keySet遍历的时间是:"+(b-a)); //使用entry遍历 效率最高的
Set<Entry<String, Object>> entrySet = map.entrySet();
for (Entry<String, Object> entry : entrySet) {
entry.getValue();
}
//获取当前毫秒数
Long c= System.currentTimeMillis();
System.out.println("使用entrySet遍历的时间是:"+(c-b));
}
汉字的排序
public class ListTest {
public static void main(String[] args) {
//实现都汉字的排序 传入一个语言环境
Comparator<Object> collator=Collator.getInstance(Locale.CHINA);
ArrayList<String> list=new ArrayList<String>();
list.add("你好");
list.add("好");
list.add("啊");
list.add("它好");
//工具类
Collections.sort(list, collator);
for (String string : list) {
System.out.println(string);
}
}
}
java集合框架03的更多相关文章
- Java 集合框架 03
集合框架·HashSet 和 TreeSet HashSet存储字符串并遍历 * A:Set集合概述及特点 * 通过API查看即可 * 无索引,不可以重复,无序 * B:案例演示 * HashSet存 ...
- java集合框架03——ArrayList和源码分析
最近忙着替公司招人好久没写了,荒废了不好意思. 上一章学习了Collection的架构,并阅读了部分源码,这一章开始,我们将对Collection的具体实现进行详细学习.首先学习List.而Array ...
- Java集合框架面试题
www.cnblogs.com/zhxxcq/archive/2012/03/11/2389611.html 这里的两个图很形象,由于放进图片链接,图片显示不了,所以只能给出该链接. Java集合框架 ...
- Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java集合框架的知识总结(1)
说明:先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析. 1.综述 所有集合类都位于java.util包下.集合中只能保存对象(保存对象 ...
- Java集合框架的知识总结
说明:面试准备,写的挺不错的. 转载地址: http://www.cnblogs.com/zhxxcq/archive/2012/03/11/2389611.html 1.综述 所有集合类都位于jav ...
- Java集合框架Collection
转自:http://www.cdtarena.com/javapx/201306/8891.html [plain] view plaincopyprint?01.在 Java2中,有一套设计优良的接 ...
- Java集合框架之四大接口、常用实现类
Java集合框架 <Java集合框架的四大接口> Collection:存储无序的.不唯一的数据:其下有List和Set两大接口. List:存储有序的.不唯一的数据: Set:存储无序的 ...
- 【转载】Java 集合框架
http://wangkuiwu.github.io/2012/02/03/collection-03-arraylist/ 网上比较全的Java集合框架教程. 注:transient是Java语言的 ...
随机推荐
- Objective-C内存管理与原理
尽管苹果在 iOS 5/ Mac OS X 10.7 开始导入ARC,利用 Xcode4.2 可以使用该机能.ARC就是自动引用计数,是一项为Objective - C程序在编译时提供自动内存管理的功 ...
- yum 搭建lnmp环境详细步骤
1.关闭防火墙[root@CentOS ~]# chkconfig iptables off 2.关闭selinuxvi /etc/sysconfig/selinux//将SELINUX=enforc ...
- 删除左右两边的空格trim
js中却没有trim()/ltrim()和rtrim()内置方法,所以需要自己写 写成类的方法格式如下:(str.trim();) <script language="javascri ...
- 兄弟连王牌PHP课程送三重豪礼啦!
兄弟连PHP就业办课程送三重豪礼啦! 惊喜一:报名9月23日班级,保障薪资直涨1000元! 9月报名学习,春节后就业,正是企业招聘的黄金高峰期,一年中拿到高薪最好的时节! 惊喜二:兄弟连云课堂900元 ...
- python运维开发之第七天
一.面向对象编程进阶 1.静态方法 @staticmethod 名义上归类管理,实际上跟类没什么关系 在静态方法里,访问不了类或实例中的任何属性 class Static_method(object) ...
- 运维小东西:每天备份sql到远程服务器上
首先两台服务器可以无密码登录(这个方式比较简单,当然安全系数会降低) #ssh-keygen -t rsa #生成密钥发送给远程服务器上 #ssh-copy-id ~/root/id_rsa.pub ...
- Node.js stream 流学习
由于node.js 创建http 是这样的 http.createServer(function(request,response){}).listen(2000); 里面的request 就是rea ...
- poj 2886Who Gets the Most Candies?
http://poj.org/problem?id=2886 #include <cstdio> #include <cstring> #include <algorit ...
- 不通用版(从SVN取版本,通过MAVEN生成JAVA包,通过SALTSTACK传送到远程服务器并自动重启TOMCAT服务)PYTHON代码
从昨晚写到今天啊, 第一版测试成功了. PHP和JAVA的更新相对来说,PHP的自动化更新是简单多啦~~ 当然,这只是运维工作当中的一环~~ #!/usr/bin/env python # -*- c ...
- mysql通过SOURCE导入SQL时报错处理
ERROR: unknown command '\n' Can't connect to the server 网上查询了,多少是编码问题引起,一边是UTF8一边是GBK,反复调整MY.CNF配置文件 ...