首页 > 基础资料 博客日记

Java算法题常用函数

2025-11-13 11:30:02基础资料围观9

本篇文章分享Java算法题常用函数,对你有帮助的话记得收藏一下,看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[]>() {
        @Override
        public 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);
            }
        }
    }
    

文章来源:https://www.cnblogs.com/HsiaYuBing/p/19217260
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云