zoukankan      html  css  js  c++  java
  • 集合知识点(一)

    集合

    集合的作用类似于数组但是,集合相对于数组来说,有着长度自动可变的有点。对于集合来说,其底层代码也是以数组的形式存储,只不过在集合中数组的长度会根据数据的多少自动变化。


    ArrayList

    格式:

     ArrayList<Object> list = new ArrayList<Object>();
     //或者
     List<Object> list = new ArrayList<>();
     //父类指向子类对象
         //java.util包中
         //在ArrayList<Object>()的括号中可以输入任意的数,但是没有意义。
         //E Object

    查询长度

     list.size();
         //返回集合的长度,数组中通过.lenght属性

    增删改查

    1.增
     list.add(number);
         //可以添加任意类型(包括null),添加的数据可以重复
     list.add(index,element);
         //index为插入的位置,element为插入的数据值
         //需要注意的是index的取值范围是[0~list.size()]
         //结果是element放入index位置,该位置的数以及后续的数值向后移。
         //(index=list.size(),是直接放在最后)。不允许跳跃着传入数据
    2.删
     list.remove(number);
         //删除number对象
         //当number为int类型的数时,调用的是remove(int index);
         //当要删除整数时我们需要传入整数的封装类Intgeter,
       //及remove(new Intgeter(number));
    list.remove(int index); //该方法根据下标的位置删除对象。 //取值范围[0~list.size())
    3.改
     list.set(index,element);
         //index为修改的位置,element为修改的数据值
         //取值范围[0~list.size())
    4.查
     list.indexOf(number);
         //在list中查询number找到返回下标,没找到返回-1;
         //如果上面添加了null,那么在这里也可以找到。
     list.LastIndexOf(number);
         //在list倒叙中查询number找到返回下标,没找到返回-1;
     list.contains(number);
         //list中查询number找到true,没找到返回false;

    判断为空

     list.isEmpty();
         //返回false不为空
     list.size();
         //!=0不为空

    清空元素

     list.clear();
         //清空所有元素

    ArrayList、Vector与Stack

    1. API基本一样,底层都是数组的实现

    2. Vector的方法都是线程安全的,这意味着慢/ArrayList没有考虑线程

    3. 相对于Vector,ArrayList在一些算法上做了优化


    LinkedList与ArrayList

    1. 数据的结构不同

      ArrayList底层是连续的数组 /查、改快;

      LinkedList底层是双向链表 /删、增快;

    2. LinkedList对于增加、删除的首尾有单独的操作方法

       addFirst();
       addLast();
       removeFirst();
       removeLast();
    3. LinkedList与ArrayList类中的元素都可以通过.get(下标)的方式调用


    List与Set接口

    List接口Set接口
    1.有序 1.无序
    2.有下标 2.无下标
    3.可重复 3.不可重复

    HashSet

    格式:

     HashSet set = new HashSet();
     //对于HashSet来说add()不可以添加前已经出现的元素,
    //如果添加的元素已经出现则不添加值返回false
    //通过调用HashCode()与equals()方法比较

    HashSet的显示

    1. 增强for循环/foreach

       for(Object obj : set){
       //迭代
           System.out.println(odj);
       }
    2. Iterator接口(迭代器)

       Iterator it = set.iterator();
       while(it.hasNext){
       //判断是否有下一个  
           Object odj = it.next();
           //得到下一个
           System.out.println(odj);
       }

    Hash/哈希

    优点:增删改查速度快,提高存储率

    缺点:元素不可重复


    TreeSet

    特点:

    1. 有序列表

    2. 加入的对象必须实现Comparable(java.lang包中)接口中的ComepareTo方法

      ComepareTo返回的数值可分为整数、负数、零(可以通过两个数相减)


    元素排序

    要求:对List接口下集合

    1.Set->List

     List<类> list = new ArrayList<>(set)
     //set指Set接口下的集合类的对象

    2.Collections/工具类

     

    1.Collections.shuffle();
    //随机打乱顺序

    !!!要与Collection相区别,Collection是集合框架的上层接口

    3.排序语句

    1.  
      Collections.sort(list);
       //自动排序,要求List中的类实现Comparable接口中的CompareTo方法

       

    1.  Collections.sort(list,(新对象|内部类));
       //要求新对象或内部类实现Comparator接口中的compare方法

    Comparable与Comparator

    接口名所在包接口方法方法参数方法实现的类
    Comparable java.lang compareTo 1 实现类实现
    Comparator java.util compare 2 另一个类或内部类
  • 相关阅读:
    AutoLISP批量移动图元到指定图层
    AutoLISP实现同时绘制多条直线
    再测试下连接微博
    一个博士的论文致谢词
    AutoLISP实现橡皮筋绘图预览
    AutoLISP根据所选图元冻结图层
    AutoCAD中绘制箭头
    你是谁的流川枫
    AutoLISP反应器vlrobjectreactor函数应用
    AutoLISP实时跟踪鼠标坐标
  • 原文地址:https://www.cnblogs.com/-Archenemy-/p/11992913.html
Copyright © 2011-2022 走看看