Collections工具类的使用

  1. public class News implements Comparable {
  2. private int id; //新闻编号
  3. private String title; //新闻标题
  4.  
  5. @Override
  6. public String toString() {
  7. return "新闻 [编号=" + id + ", 标题=" + title + "]";
  8. }
  9.  
  10. public News() { //无参构造
  11. super();
  12. }
  13. public News(int id, String title) { //带参构造
  14. super();
  15. this.id = id;
  16. this.title = title;
  17. }
  18. public int getId() {
  19. return id;
  20. }
  21. public void setId(int id) {
  22. this.id = id;
  23. }
  24. public String getTitle() {
  25. return title;
  26. }
  27. public void setTitle(String title) {
  28. this.title = title;
  29. }
  30.  
  31. //重写 排序的规则 升序
  32. @Override
  33. public int compareTo(Object o) {
  34. News news=(News) o;
  35. if (news.getId()==this.id) {
  36. return 0;
  37. }else if (news.getId()<this.id) {
  38. return 1; // 降序 return -1;
  39. }else {
  40. return -1; // 降序 return 1;
  41. }
  42. }
  43. }

创建测试类

  1. public class CollectionsTest {
  2.  
  3. public static void main(String[] args) {
  4. /*
  5. * 操作集合的工具类Collections
  6. *
  7. */
  8. //创建一个集合
  9. List<String> list=new ArrayList<String>();
  10. list.add("b");
  11. list.add("d");
  12. list.add("c");
  13. list.add("a");
  14. System.out.println("没有排序====》"+list); //插入时候的顺序
  15. //对集合进行随机排序
  16. Collections.shuffle(list);
  17. //开奖号码 136 顺序必须对 631不对
  18. System.out.println("随机排序====》"+list);
  19. //按照字母的升序排列
  20. Collections.sort(list);
  21. System.out.println("升序====》"+list);
  22. //降序 也是必须在升序之后
  23. Collections.reverse(list);
  24. System.out.println("降序====》"+list);
  25. //查询 "b"在集合中的位置 必须先升序 排列之后再查询
  26. Collections.sort(list);
  27. System.out.println(Collections.binarySearch(list, "a"));
  28. System.out.println("****************************");
  29. List<News> news=new ArrayList<News>(); //想实现对象的排序
  30. news.add(new News(3, "新闻3"));
  31. news.add(new News(1, "新闻1"));
  32. news.add(new News(4, "新闻4"));
  33. news.add(new News(2, "新闻2"));
  34. for (News news2 : news) {
  35. System.out.println(news2);
  36. }
  37. /*
  38. * 如果News没有重写Comparable接口中的compareTo()是编译报错的!
  39. * 我们必须重写compareTo() 定义规则
  40. */
  41. Collections.sort(news);
  42. System.out.println("对象排序之后.........");
  43. for (News news2 : news) {
  44. System.out.println(news2);
  45. }
  46. }
  47.  
  48. @Test
  49. public void test1(){
  50. //通过String类中的split()把字符串转换成字符串数组
  51. String[] str1="a b c d d d".split(" ");
  52. //把数组转换成集合
  53. List<String> asList = Arrays.asList(str1);
  54. System.out.println(asList);
  55. String[] str2="c d".split(" ");
  56. List<String> asList2= Arrays.asList(str2);
  57. //最后一次出现的位置
  58. System.out.println(Collections.lastIndexOfSubList(asList, asList2));
  59. //首次出现的位置
  60. System.out.println(Collections.indexOfSubList(asList, asList2));
  61. }
  62.  
  63. @Test
  64. public void test2(){
  65. String[] str1="a b c d e f".split(" ");
  66. //把数组转换成集合
  67. List<String> list = Arrays.asList(str1);
  68. System.out.println(list);
  69. //集合中的元素向后移distance个位置,之后被覆盖的元素循环前移
  70. Collections.rotate(list, 2);
  71. System.out.println(list);
  72. }
  73. }

3.map遍历的效率比较

  1. @Test
  2. public void test(){
  3. Map<String, Object> map=new HashMap<String, Object>();
  4. for (int i = 0; i <1000000; i++) {
  5. map.put("key"+i, "value"+i);
  6. }
  7. //获取当前毫秒数
  8. Long a= System.currentTimeMillis();
  9. //遍历map 首先获取所有key的集合
  10. Set<String> set = map.keySet();
  11. for (String key : set) {
  12. map.get(key); //根据key取得value
  13. }
  14. //获取当前毫秒数
  15. Long b= System.currentTimeMillis();
  16. System.out.println("使用keySet遍历的时间是:"+(b-a));
  17.  
  18. //使用entry遍历 效率最高的
  19. Set<Entry<String, Object>> entrySet = map.entrySet();
  20. for (Entry<String, Object> entry : entrySet) {
  21. entry.getValue();
  22. }
  23. //获取当前毫秒数
  24. Long c= System.currentTimeMillis();
  25. System.out.println("使用entrySet遍历的时间是:"+(c-b));
  26. }

汉字的排序

  1. public class ListTest {
  2.  
  3. public static void main(String[] args) {
  4. //实现都汉字的排序 传入一个语言环境
  5. Comparator<Object> collator=Collator.getInstance(Locale.CHINA);
  6. ArrayList<String> list=new ArrayList<String>();
  7. list.add("你好");
  8. list.add("好");
  9. list.add("啊");
  10. list.add("它好");
  11. //工具类
  12. Collections.sort(list, collator);
  13. for (String string : list) {
  14. System.out.println(string);
  15. }
  16. }
  17.  
  18. }

java集合框架03的更多相关文章

  1. Java 集合框架 03

    集合框架·HashSet 和 TreeSet HashSet存储字符串并遍历 * A:Set集合概述及特点 * 通过API查看即可 * 无索引,不可以重复,无序 * B:案例演示 * HashSet存 ...

  2. java集合框架03——ArrayList和源码分析

    最近忙着替公司招人好久没写了,荒废了不好意思. 上一章学习了Collection的架构,并阅读了部分源码,这一章开始,我们将对Collection的具体实现进行详细学习.首先学习List.而Array ...

  3. Java集合框架面试题

    www.cnblogs.com/zhxxcq/archive/2012/03/11/2389611.html 这里的两个图很形象,由于放进图片链接,图片显示不了,所以只能给出该链接. Java集合框架 ...

  4. Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  5. Java集合框架的知识总结(1)

    说明:先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析. 1.综述 所有集合类都位于java.util包下.集合中只能保存对象(保存对象 ...

  6. Java集合框架的知识总结

    说明:面试准备,写的挺不错的. 转载地址: http://www.cnblogs.com/zhxxcq/archive/2012/03/11/2389611.html 1.综述 所有集合类都位于jav ...

  7. Java集合框架Collection

    转自:http://www.cdtarena.com/javapx/201306/8891.html [plain] view plaincopyprint?01.在 Java2中,有一套设计优良的接 ...

  8. Java集合框架之四大接口、常用实现类

    Java集合框架 <Java集合框架的四大接口> Collection:存储无序的.不唯一的数据:其下有List和Set两大接口. List:存储有序的.不唯一的数据: Set:存储无序的 ...

  9. 【转载】Java 集合框架

    http://wangkuiwu.github.io/2012/02/03/collection-03-arraylist/ 网上比较全的Java集合框架教程. 注:transient是Java语言的 ...

随机推荐

  1. QQ情侣头像~

                       

  2. Windows Phone 使用 WriteableBitmap后台生成图片

    这几天项目是遇到一个需求,需要后台把几个元素生成到一张图片上,并保存到文件中 private void cutscreen_Click(object sender, EventArgs e) { Gr ...

  3. Java学习----设计正真的应用程序

    import java.util.Scanner; // 输入10位学生的成绩,并且判断他们的成绩是哪个等级,其中90-100是A级,80-89是B级,70-79是C级,60-69是D级,60分以下E ...

  4. 获取fragment中的控件的写法

    package com.example.baoxiu.fragment;import com.example.baoxiu.R;import com.example.baoxiu.Register;i ...

  5. 使用wrapper将java程序注册程windows服务后不生效

    使用wrapper将java程序注册程windows服务后不生效 使用add.bat或test***.bat测试通过了, 然后使用install***.bat注册后cmd显示注册成功. 但是程序到了运 ...

  6. JS 日常

    判断一个字符串是否在另一个字符串里面 var str = 'bblText'; if(str.indexOf("Text") > 0)  alert("包含了Tex ...

  7. Java对象引用

    1.对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK ...

  8. Fedora 19+ 启动顺序调整

    首先找到Windows 8的menuentry cat /boot/grub2/grub.cfg | grep Windows 设置Windows 作为默认的启动项 grub2-set-default ...

  9. UOJ 218 火车管理

    http://uoj.ac/problem/218 思路:建立一个可持久化线段树,代表这个位置的火车是哪辆,然后再弄一个线段树维护答案. 如果询问,直接询问线段树. 如果区间压入,直接在主席树上面压入 ...

  10. 学习Cassandra资料的一些整理

    Cassandra note: 依赖:需要java 8 (http://www.oracle.com/technetwork/java/javase/downloads/index.html) 数据模 ...