当前位置: 首页 > news >正文

Java算法题常用函数

Java算法题常用函数

String 字符串

  1. charAt(int index)方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。

  2. length() 方法用于返回字符串的长度。空字符串的长度返回 0。

  3. 将String字符串转化成char数组

    char[] chars = string.toCharArray();

  4. char数组转String

    new String (charArray); // charArray => char[] charArray

  5. 返回一个新字符串,它是此字符串的一个子字符串

    String sub = str.substring(int start, int end)

  6. 指定字符在此字符串中第一次出现处的索引

    str.indexOf(int ch)

  7. 删除字符串前后的空白符

    str.trim()

StringBuffer/StringBuilder

  • 在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。

  • StringBuilder 类在 Java 5 中被提出,两者最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

  • 由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。

  1. 初始化

    StringBuilder sb = new StringBuilder(length)

  2. 返回长度(字符数)

    sb.length()

  3. 将指定的字符串追加到此字符序列

    sb.append(String s)

  4. 将此字符序列用其反转形式取代

    sb.reverse()

  5. 返回一个新的 String,它包含此序列当前所包含的字符子序列

    sb.substring(int start, int end)

  6. 转换成String

    String str = sb.toString();

Stack 栈

  1. 初始化

    Stack<?> stack = new Stack();

  2. 判断堆栈是否为空

    stack.isEmpty()

  3. 查看堆栈顶部的对象,但不从堆栈中移除它

    stack.peek()

  4. 移除堆栈顶部的对象,并作为此函数的值返回该对象

    stack.pop()

  5. 元素压入堆栈顶部

    stack.push()

  6. 返回对象在堆栈中的位置,以 1 为基数

    int pos = stack.search()

Array 数组

  1. 初始化长度为size的数组

    int[] array = new int[size]

  2. 数组长度

    array.length

  3. 数组的排序

    Arrays.sort(array)

  4. 二维int类型数组的排序按首个数字升序排序 (lambda表达式写法)

    Arrays.sort(array, (v1, v2) -> v1[0] - v2[0])

    ps: 匿名内部类写法

    Arrays.sort(array, new Comparator<int[]>() {@Overridepublic int compare(int[] v1, int[] v2) {// 与 Lambda 表达式逻辑完全一致return v1[0] - v2[0];}
    });
    
  5. 当区间左端点相同的时候,按照右端点降序排序

    Arrays.sort(intervals, (o1, o2) -> {if(o1[0] == o2[0]){return o1[1] - o2[1];}return o2[0] - o1[0];
    });
    
  6. 用于一维数组的初始化或者填充

    Arrays.fill(array, 1);

  7. 复制新数组,并指定长度 (例: 将数组array复制一个新数组, 并指定长度为length)

    int[] copy = Arrays.copyOf(array, length)

List 列表

  • 以下情况使用 ArrayList :

    • 频繁访问列表中的某一个元素(随机访问)。

    • 只需要在列表末尾进行添加和删除元素操作。

  • 以下情况使用 LinkedList :

    • 你需要通过循环迭代来访问列表中的某些元素。
    • 需要频繁的在列表开头、中间、末尾等位置进行添加删除元素操作。
  1. 初始化

    List<T> list = new LinkedList<>();
    List<T> list = new ArrayList<>();
    
  2. 列表的尾部插入指定元素

    list.add(Object o);

  3. 列表的尾部移除元素(一般用于dfs算法 进行回溯)

    list.remove(list.size() - 1); //删除最后一个元素

  4. 判断集合中是否存在这个元素

    list.contains(Object o); // 返回true 或 false

  5. 将数组转为List

    List<String> names = Arrays.asList(new String[]{"zhangsan","li"});

    • List转为数组

      T[] array = list.toArray();

  6. 集合排序

    Collections.sort(list); // 返回值为void

Queue 队列

  1. 初始化

    Queue<Integer> queue = new LinkedList()

  2. 添加元素

    queue.offer(Object o);

  3. 删除队列中的第一个元素

    queue.poll(Object o); // 返回队列的第一个元素

  4. 判断是否为空

    queue.isEmpty();

  5. 获取队列的大小

    queue.size();

PriorityQueue 优先队列

  • 优先级队列并不是队列中所有的元素都是按照优先级排放的,只能保证出队顺序是按照优先级进行的
  1. 初始化

    Queue<Integer> queue = new PriorityQueue<>((a, b) -> b - a);
    

Map/HashMap

  • Map是接口,HashMap是具体实现

  • HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。

  1. 初始化

    Map<T, T> map = new HashMap();
    
  2. 获取指定键的值

    map.get(Object o);

  3. 添加一个映射

    map.put(K key, V value)

  4. 是否包含指定的key

    containsKey(Object key) \\如果此映射包含指定键的映射关系,则返回 true

  5. 是否包含指定的value

    containsValue(Object value) \\如果此映射将一个或多个键映射到指定值,则返回 true

  6. Map遍历

    Map<String, Integer> map = new HashMap();
    map.put("zhangsan",1);
    map.put("li",2);
    map.put("wangwu",2);
    for (Map.Entry<String, Integer> m: map.entrySet()) {System.out.println("姓名: "+m.getKey()+" 编号: "+m.getValue());
    }
    

HashSet 集合

  • HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。

  • HashSet 允许有 null 值。

  1. 初始化

    HashSet<T> set = new HashSet<>();

  2. 添加元素

    set.add(Object o);

  3. 判断元素是否存在

    set.contains(Object o);

  4. 删除元素

    set.remove(Object o);\

  5. 计算元素数量

    set.size()

  6. 迭代

    public class RunoobTest {public static void main(String[] args) {HashSet<String> sites = new HashSet<String>();sites.add("Google");sites.add("Runoob");sites.add("Runoob");     // 重复的元素不会被添加for (String i : sites) {System.out.println(i);}}
    }
    
http://www.rkmt.cn/news/48297.html

相关文章:

  • 基于粒子群优化(PSO)算法的图像配准MATLAB实现
  • 2025年11月乳清蛋白粉产品推荐榜:纽特舒玛领衔五强对比排行
  • 2025年口碑好的除四害用户最信赖榜
  • 2025年11月熬夜急救产品推荐评测:五款精华熬夜修护榜
  • 2025年北京医疗事故案件律师权威推荐榜单:医疗侵权案/医疗事故鉴定案/医疗事故赔偿案律师团队精选
  • 领嵌iLeadE-588智能网关设备物联网应用中重要的设备
  • 2025年质量好的专利评估高信赖度企业
  • Python代码规范:如何写出符合PEP8的代码
  • OpenCV Python 绑定:原理与实战 - 教程
  • 【转载】ACM MM 投稿论文模板修改成投稿模式
  • 禅道本地环境搭建
  • Python 列表List 简介
  • 智能制造与AI人工智能落地
  • 2025年专业的营销短信平台实力供应商推荐榜
  • 2025年专业的注册公司高评价服务榜
  • 关于AT32部分芯片带有SPIM,如何开启外部flash和SPIM驱动的代码分享
  • 2025东莞食材配送/生鲜食材/食堂配送厂家推荐广东山农农业集团,新鲜直达服务优!
  • 2025年有实力的物流热销口碑榜
  • 2025东莞蔬菜/生鲜/食材配送推荐,广东山农农业集团食堂专供新鲜直达
  • 2025年别墅供暖厂家权威推荐榜单:斯密锅炉/别墅供暖方案/联排别墅供暖源头厂家精选
  • 梯度下降的学习率与批大小
  • 2025年可靠的西铁城机床代理商用户推荐榜
  • 习题解析之:本月天数
  • C4D 2026.0 发布!渲染提速 40%,千万面场景流畅拿捏
  • 2025年优质的云计算就业岗位高薪就业推荐
  • 私有部署|基于Ansible的运维自动化作业平台 - ops
  • HTTP请求在网络中传输的完整路径
  • Python篇】Python基础–Python基本操作
  • 2025年评价高的轩恩档案管理系统行业应用解决方案推荐榜
  • 2025年专业的装修全屋定制行业口碑排行榜