• Java常用工具类


    集合概述

    1. Java中的集合是工具类,可以存储任意数量的具有共同属性的对象。与数组不同,集合的长度可以动态改变,所以数组适合去存储固定长度的数据,集合适合去存储不固定长度的数据。
    2. 集合的应用场景:
      1)无法预测存储数据的数量。
      2)存储具有一对一关系的数据(比如某件商品,其商品编号只对应这件商品)。
      3)需要进行数据的增删。
      4)数据重复问题。

    集合框架的体系结构

    Collection:(类的对象) 三个子接口:
    List:(序列) 有序的、允许重复的 主要实现类:
    ArrayList:长度动态增长的数组
    Queue:(队列) 有序的、允许重复的 主要实现类:
    LinkedList:链表的内容
    Set:(集)无序的、不允许重复的 主要实现类:
    HashSet:哈希值
    Map:(键值对)主要实现类:
    HashMap:哈希表

    List集合

    List(列表):
    1)元素有序 可重复 -----称为序列 1223
    2)可以 精确 的控制 每个元素的插入位置,或删除某个位置的元素
    3)主要有两个实现类 ArrayList LinkedList
    ArrayList和数组比较相似,不同就是ArrayList存储个数会动态变动的。

    ArrayList:
    1)底层是由数组实现的
    2)长度 动态增长
    3)在列表尾部 插入或删除数据 非常有效
    4)但在列表中间插入数据时会产生大量的元素复制,效率较低,所以更适合 查找与更新新数据
    5)元素可以为null值

    常用方法使用:

    List list = new ArrayList();//导入java.util包
    list.add("Java"); //添加数据
    list.size(); //列表中元素个数
    list.get(int i); //显示列表中i处元素
    list.remove(int index); //移除i处元素
    list.remove(Object o); //移除列表中元素
    list.contains(Object o); //查询列表中是否包括某个对象
    

    Set集合

    1. Set:元素无序并且不可以重复的集合,被称为集。
    2. HashSet:
      1)元素无序且不可重复,HashSet是Set的一个重要实现类,称为哈希集;
      2)HashSet中只允许有一个null元素;
      3)具有良好的存取和查找性能。
      4)HashSet中的元素无序并且不可以重复
      5)HashSet的底层其实是HashMap。
      6)HashSet默认容量是16,默认的加载因子为0.75

    什么是加载因子(负载因子/装载因子)?
    用于表示哈希表中元素填满的程度。
    冲突的机会越大,则查找的成本越高。反之,查找的成本越低,从而查找的时间越少。

    HashMap中的加载因子
    ①new HashMap();
    初始容量是16,加载因子loadFactor=0.75,默认容量是16*0.75=12
    ②new HashMap(int initialCapacity);
    给定自定义的loadFactor.
    ③new HashMap(int initialCapacity, fload loadFactor);
    自定义初始容量,自定义加载因子。

    常用方法

    迭代器:Iterator接口可以以统一的方式对各种集合元素进行遍历
    hasNext():检测集合中是否还有下一个元素
    next():返回集合中的下一个元素
    把集合添加到迭代器中:(导入包)Iterator 迭代器名=集合名.iterator()方法
    遍历迭代器并输出:

    Map

    Map是一个接口,无法进行实例化操作。

    可以定义一个引用指向HashMap()的方法构造一个Map类,

    添加键值对

    向Map中添加元素时使用 对象名.put(key, value)的方法添加键值对。

    遍历Map

    方法一:使用iterator定义一个引用,在指向Map的实例化对象中使用对象名.values()f返回Map类中所有值的内容。

    Iterator<String> it = objName.values().iterator();
    while (it.hasNext()) {
        System.out.println(it.next());
    }
    

    方法二:使用指向Map的实例化对象调用 entrySet() 方法,返回一个集合,集合里面包含了Map类当中所有的键值对。

    Set<Map.Entry<String, String>> entries = objName.entrySet();
    for (Map.Entry<String, String> en : entries) {
        System.out.print(en.getKey()+"-");;
        System.out.println(en.getValue());
    }
    

    查找某个key

    keySet()方法将map中所有key值的取出,返回值是个只存放key值的Set集合

    Set<String> keySet = objName.keySet();
    for (String key : keySet) {
        if (strSearch.equals(key)) {
            System.out.println("找到了!"+"键值对为:"+key+"-"+objName.get(key));
            break;
        }
    }
    

    检查是否存在某个键

    objName.containsKey(keyName);
    
  • 相关阅读:
    Hdu 3564 Another LIS 线段树+LIS
    利用ESLINT进行js 语法检查,以及局部安装时遇到的一些坑
    操作系统杂谈
    算法杂谈
    前端杂谈
    操作系统复习
    vue之——从彩笔的进步之路
    一丢丢学习之webpack4 + Vue单文件组件的应用
    计蒜客 2017复赛 百度地图导航
    electron打包之真的恶心
  • 原文地址:https://www.cnblogs.com/greycdoer0/p/12990550.html
Copyright © 2020-2023  润新知