zoukankan      html  css  js  c++  java
  • java学习基础知识七

    一、java集合概述
    1、java集合类存放于java.util包中,是一个用来存放对象的容器。
      →集合只能存放对象。
      →集合存放的是多个对象的引用,对象本身还是放在堆内存中
      →集合可以存放不同类型,不限数量的数据类型
    2、java集合可分为Set、List、和Map三大体系
      Set:无序,不可重复的集合
      List:有序,可重复的集合
      Map:具有映射关系的集合
      在JDK5之后,增加了泛型,java集合可以记住容器中对象的数据类型

    二、HashSet:HashSet是Set接口的典型实现,按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能。
    1、HashSet具有以下特点:
      →不能保证元素的排列顺序;
      →不可重复;
      →HashSet不是线程安全的;
      →集合元素可以使null
    2、当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,
      然后根据hashCode值决定返回对象在HashSet中的存储位置。

    三、TreeSet:TreeSet是SortedSet接口的实现类,TreeSet可以确保集合元素处于排序状态。
      TreeSet支持两种排序方法:自然排序和定制排序。默认情况下,TreeSet采用自然排序

      

    Person p1=new Person("张三",25);
            Person p2=new Person("李四",23);
            Set<Person> s=new TreeSet<Person>(new Person());
            s.add(p1);
            s.add(p2);
            //System.out.println(s);
            
            for(Person p:s){
                System.out.println(p.name+"	"+p.age);
            }
            
            /**
     * 声明一个Person类
     * 包含变量name和age
     * @author 小虞哥哥
     *
     */
    class Person implements Comparator<Person>{        //把person对象存到TreeSet中并按照年龄排序
        int age;
        String name;
        
        public Person(){}
        
        public Person(String name,int age){
            this.name=name;
            this.age=age;
        }
        
        @Override
            public int compare(Person o1, Person o2) {    //按照年龄正序排列
            if(o1.age>o2.age){
                return 1;
            }else if(o1.age<o2.age){
                return -1;
            }else{
                return 0;
            }
        }
    }

    四、List与ArrayList
    1、List代表一个元素有序、且可重复的集合,集合中的每个元素都有其对应的顺序索引
    2、List允许使用重复元素,可以通过索引来访问指定位置的集合元素。
    3、List默认按元素的添加顺序设置元素的索引
    4、List集合里添加了一些根据索引来操作集合元素的方法
    注:ArrayList和Vector是List接口的两个典型实现,区别如下:
      →Vector是一个古老的集合,通常建议使用ArrayList;
      →ArrayList是线程不安全的,而Vector是线程安全的;
      →即使为保证List集合线程安全,也不推荐使用Vector

    五、Map:用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的Key,另外一组用于保存Map里的Value
    1、Map中的Key和Value都可以是任何引用类型的数据
    2、Map中的Key不允许重复
    3、Key和Value之间存在单向一对一关系,即通过指定的Key总能找到唯一的,确定的Value

    六、TreeMap:存储Key-Value对时,需要根据key对key-value对进行排序。TreeMap可以使所有的key-value对处于有序状态

    七、操作集合的工具类:Collections:是一个操作Set、List和Map等集合的工具类
    1、排序操作:
      →reverse(List):反转List中元素的顺序
      →shuffle(List):对List集合元素进行随机排序
      →sort(List):根据元素的自然顺序对指定List集合元素按升序排序
      →sort(List,Comparator):根据指定的Comparator产生的顺序对List集合元素进行排序
      →swap(List,int,int):将指定list集合中的i处元素和j处元素进行交换
    2、查找、替换
      →Object max(Collection):根据元素的自然顺序,返回给定集合中的最大元素
      →Object max(Collection,Comparator):根据Comparator指定的顺序,返回给定集合中的最大元素
      →同理可得min
      →int frequency(Collection,Object):返回指定集合中指定元素的出现次数
      →boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换旧值

    八、同步控制:Collection类中提供了多个synchronizedXxx()方法,该方法可将指定集合包装成线程同步的集合,从而解决多线程并发访问集合时的线程安全问题

  • 相关阅读:
    linux里source、sh、bash、./有什么区别
    grafna如何用新的dashbord覆盖旧的dashbord
    selenium.webdriver获取结果转为json格式
    利用Python读取和修改Excel文件(包括xls文件和xlsx文件)——基于xlrd、xlwt和openpyxl模块
    python多线程实现ping多个ip
    Kubernetes 从懵圈到熟练 – 集群网络详解(转)
    kubectl 自动补全
    跨域资源共享 CORS 详解
    serializers--嵌套关系作为字段来表示
    Vue结合后端DjangoFramework的在线生鲜超市(前后端分离)【django2.2+xadmin+ueditor】
  • 原文地址:https://www.cnblogs.com/MeiToufu/p/14337245.html
Copyright © 2011-2022 走看看