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);
    }
}
时间: 2024-08-03 08:47:05

java集合框架03的相关文章

Java集合框架的知识总结

说明:面试准备,写的挺不错的. 转载地址: http://www.cnblogs.com/zhxxcq/archive/2012/03/11/2389611.html 1.综述 所有集合类都位于java.util包下.集合中只能保存对象(保存对象的引用变量).(数组既可以保存基本类型的数据也可以保存对象). 当我们把一个对象放入集合中后,系统会把所有集合元素都当成Object类的实例进行处理.从JDK1.5以后,这种状态得到了改进:可以使用泛型来限制集合里元素的类型,并让集合记住所有集合元素的类

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

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 概要 上一章,我们学习了Collection的架构.这一章开始,我们对Collection的具体实现类进行讲解:首先,讲解List,而List中ArrayList又最为常用.因此,本章我们讲解ArrayList.先对ArrayLis

Java集合框架面试题

www.cnblogs.com/zhxxcq/archive/2012/03/11/2389611.html 这里的两个图很形象,由于放进图片链接,图片显示不了,所以只能给出该链接. Java集合框架是最常被问到的Java面试问题,要理解Java技术强大特性就有必要掌握集合框架.这里有一些实用问题,常在核心Java面试中问到. 1.什么是Java集合API Java集合框架API是用来表示和操作集合的统一框架,它包含接口.实现类.以及帮助程序员完成一些编程的算法.简言之,API在上层完成以下几件

黑马程序员------Java集合框架学习总结

Java培训.Android培训.iOS培训..Net培训.期待您的交流 一.综述 所有集合类都位于java.util包下.集合中只能保存对象(保存对象的引用变量).(数组既可以保存基本类型的数据也可以保存对象). Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些接口或实现类. 二.Collection接口 Collction: List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引.

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

说明:先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析. 1.综述 所有集合类都位于java.util包下.集合中只能保存对象(保存对象的引用变量).(数组既可以保存基本类型的数据也可以保存对象). 当我们把一个对象放入集合中后,系统会把所有集合元素都当成Object类的实例进行处理.从JDK1.5以后,这种状态得到了改进:可以使用泛型来限制集合里元素的类型,并让集合记住所有集合元素的类型(参见具体泛型的内容). Java的集合类主

黑马程序员---Java集合框架

---------------------- Android开发.java培训.期待与您交流! ---------------------- Java集合框架 集合我们都知道是用来储存对象的容器,那之前的数组不也可以储存对象么,为什么要出现集合呢? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,然而集合类中提供很多方便操作对象存储的方法,要比数组更容易操作对象,而且集合的长度是可变的,然而数组长度确实固定不变的,这样不利于对对象的间隔储存.  数组和集

Java自动化测试框架-03 - TestNG之Test Group篇 - 我们一起组团打怪升级(详细教程)

简介 其实这篇文章的group宏哥在上一篇中就提到过,但是就是举例一笔带过的,因此今天专门有一篇文章来讲解Group的相关知识.希望大家茅塞顿开 ,有着更进一步认识和了解测试组. 一.Test Group(测试组) TestNG 允许你将复杂的测试方法归类为不同的组.不仅仅是可以声明某个方法属于某个组,而且还可以让组包含其他的组.这样TestNG可以调用或者请求包含一组特定的组 (或者正则表达式)而排除其他不需要组的集合.这样,如果你打算将测试分成两份的时候,就无需重新编译.这个特点,会给你在划

Java—集合框架List

集合的概念 现实生活中:很多的事物凑在一起 数学中的集合:具有共同属性的事物的总和 Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象 集合的作用 在类的内部,对数据进行组织(针对作用与意义一样的属性,将他们放到一个集合中) 简单而快速的搜索大数量的条目 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中快速的插入或删除有关元素 有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型 与数组相比 数组的长度

《深入理解Java集合框架》系列文章

Introduction 关于C++标准模板库(Standard Template Library, STL)的书籍和资料有很多,关于Java集合框架(Java Collections Framework, JCF)的资料却很少,甚至很难找到一本专门介绍它的书籍,这给Java学习者们带来不小的麻烦.我深深的不解其中的原因.虽然JCF设计参考了STL,但其定位不是Java版的STL,而是要实现一个精简紧凑的容器框架,对STL的介绍自然不能替代对JCF的介绍. 本系列文章主要从数据结构和算法层面分析