Java刷题常见的集合类,各种函数的使用以及常见的类型转化等等

news2024/12/27 8:18:22

前言

相信大家在刷算法题的过程中,好不容易想出来大概的思路,也知道去用哪个集合类,但各个集合类的一些命令都长得太像,很容易将他们弄错,并且在各集合之间的转化也是特别烦人,还有很多实用的函数都知道可以去用,但总是会忘记。

本篇将会把刷题中常见的,实用的集合类的功能和各类函数都将详细说明(后续遇到慢慢补充)


集合类

ArrayList

1. 创建和初始化 ArrayList

ArrayList<Integer> list = new ArrayList<>();

默认容量为10

2.添加元素  add

添加单个元素(常用)

        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        //list{1 2 3 4 5}

在指定位置添加元素: 

        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(0,10);  // [10, 1, 2, 3, 4, 5]

3.获取元素 get

获取指定索引位置的元素

        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        int element = list.get(1);  // 获取索引为 1 的元素  2

4.删除元素 remove

boolean contains = list.contains(10);  // 检查是否包含值为 10 的元素 false
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.remove(0); // 2 3 4 5
        list.remove(list.size()-1); // 2 3 4

5.检查元素

1)检查集合是否包含某个元素

boolean contains = list.contains(10);  // 检查是否包含值为 10 的元素 false

 2)检查集合是否为空

boolean isEmpty = list.isEmpty();  // 检查 ArrayList 是否为空

 6.遍历 ArrayList

1)使用普通 for 循环遍历

for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));  // 访问每一个元素
}

2)使用增强 for 循环遍历: 

for (Integer num : list) {
    System.out.println(num);
}

3)使用迭代器遍历: 

Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

LinkedList

LinkedList和ArrayList命令上大体相同,他们都实现了List<E>接口

LinkedList 实现了 QueueDeque 接口,可以用作队列(FIFO)和栈(LIFO):


Stack

1. 创建Stack对象

用于创建一个新的栈,常用于存储数字、字符或其他对象。

Stack<Integer> stack = new Stack<>();

2. 压入元素 (push

push(E item)方法用于将元素推入栈顶。

stack.push(10);
stack.push(20);
stack.push(30);
// 10 20 30

 3. 弹出元素 (pop)

pop()方法用于移除并返回栈顶元素。如果栈为空,调用该方法会抛出EmptyStackException异常。需要注意栈为空时使用时需检查栈是否为空,避免异常。

int topElement = stack.pop(); // 30

 4. 查看栈顶元素 (peek)

peek()方法用于查看栈顶元素,但不会移除它。如果栈为空,同样会抛出EmptyStackException异常。

int topElement = stack.peek(); // stack{10,20} 20 

 5. 检查栈是否为空 (empty)

 empty()方法返回true如果栈为空,false如果栈不为空。这个方法在判断栈是否可以继续操作时非常有用。

boolean isEmpty = stack.empty(); // false

Queue

1. 创建队列对象

Queue<Integer> queue = new LinkedList<>();
// 或使用 ArrayDeque,性能更好
Queue<Integer> queue = new ArrayDeque<>();

2. 添加元素 (add 和 offer

在刷题中,offer 比较常用 

queue.add(10);  // 抛出异常:如果队列已满,则抛出 IllegalStateException
queue.offer(20); // 返回 true/false:如果队列已满,返回 false

 3. 移除元素 (poll 和 remove)

 poll() 更常用

int element = queue.poll();  // 移除并返回队列头部的元素,队列为空时返回 null
int element = queue.remove();  // 移除并返回队列头部的元素,队列为空时抛出 NoSuchElementException

4. 查看队列头部元素 (peek 和 element

peek() 方法更常用,因为它更安全,不会抛出异常。

int element = queue.peek();  // 返回队列头部的元素,队列为空时返回 null
int element = queue.element();  // 返回队列头部的元素,队列为空时抛出 NoSuchElementException

5. 队列大小 (size

返回队列中元素的数量,通常用于判断队列是否为空。

int size = queue.size();  // 获取队列中元素的数量

6. 检查队列是否为空 (isEmpty

 返回 true 如果队列为空,false 如果队列不为空。常用于循环前检查队列是否有元素。

boolean isEmpty = queue.isEmpty();  // 判断队列是否为空

 


PriorityQueue

PriotyQueue跟Queue命令大体相似,但它也是刷题中经常遇到的,因为它可以创建大小根堆

  • 大根堆(Max-Heap):每个父节点的值大于或等于其子节点的值,根节点为最大元素。
  • 小根堆(Min-Heap):每个父节点的值小于或等于其子节点的值,根节点为最小元素。

小根堆:

 // 创建小根堆
        //默认就是小根堆
        PriorityQueue<Integer> minHeap = new PriorityQueue<>();

        // 向小根堆插入元素
        minHeap.offer(10);
        minHeap.offer(20);
        minHeap.offer(5);
        minHeap.offer(30);

        // 输出堆顶元素(最小元素)
        System.out.println("小根堆堆顶元素:" + minHeap.peek()); // 输出 5

        // 删除堆顶元素(最小元素)
        System.out.println("删除堆顶元素:" + minHeap.poll()); // 输出 5

        // 输出删除堆顶后的堆顶元素
        System.out.println("删除后堆顶元素:" + minHeap.peek()); // 输出 10

 大根堆

 // 创建大根堆(使用自定义的比较器实现降序排列)
        PriorityQueue<Integer> maxHeap = new PriorityQueue<>((a,b)-> b - a);

        //        PriorityQueue<Integer> max = new PriorityQueue<>(Comparator.reverseOrder());
        // 向大根堆插入元素
        maxHeap.offer(10);
        maxHeap.offer(20);
        maxHeap.offer(5);
        maxHeap.offer(30);

        // 输出堆顶元素(最大元素)
        System.out.println("大根堆堆顶元素:" + maxHeap.peek()); // 输出 30

        // 删除堆顶元素(最大元素)
        System.out.println("删除堆顶元素:" + maxHeap.poll()); // 输出 30

        // 输出删除堆顶后的堆顶元素
        System.out.println("删除后堆顶元素:" + maxHeap.peek()); // 输出 20

Set

1.创建 Set 实例

3种方法任选一种

Set<Integer> set = new HashSet<>();
Set<Integer> linkedSet = new LinkedHashSet<>();
Set<Integer> treeSet = new TreeSet<>();

2. 添加元素 

set.add(1);  // 添加元素,如果元素已存在,返回 false
set.add(2);
set.add(3);

3. 删除元素 

set.remove(2);  // 删除元素2

4. 检查是否包含某个元素 

boolean contains = set.contains(3);  // 返回 true 如果包含元素3

5. 获取集合的大小 

int size = set.size();  // 返回集合的元素个数

 6. 判断集合是否为空

boolean isEmpty = set.isEmpty();  // 如果集合为空,返回 true

7.遍历 

1)使用迭代器遍历

Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

2)使用增强型 for 循环遍历 

for (Integer num : set) {
    System.out.println(num);
}

7.Set 转换为 List 

List<Integer> list = new ArrayList<>(set);  // 转换为 List

Map

 1. 基本创建 Map

Map<K, V> map = new HashMap<>();
  • K 是键的类型,V 是值的类型。
  • 可以使用 HashMapTreeMapLinkedHashMap 等不同实现类。
  • 经常使用HashMap类,O(1)
        Map<Integer,Integer> map = new HashMap<>();
        Map<Integer,Integer> map1 = new TreeMap<>();
        Map<Integer,Integer> map2= new LinkedHashMap<>();

2. 插入/更新元素 

map.put(K key, V value);  // 插入或更新元素,如果key已经存在,值会被更新

3. 获取元素 

V value = map.get(K key);  // 根据键获取对应的值,若键不存在返回 null

4. 检查键或值是否存在 

boolean containsKey(Object key);  // 判断map中是否存在指定的key
boolean containsValue(Object value);  // 判断map中是否存在指定的value

5. 删除元素 

map.remove(K key);  // 根据key删除键值对

6. 获取键集合、值集合和键值对集合(重)

Set<K> keySet = map.keySet();  // 获取所有键
Collection<V> values = map.values();  // 获取所有值
Set<Map.Entry<K, V>> entrySet = map.entrySet();  // 获取所有的键值对
        Map<String,Integer> hash = new HashMap<>();
        hash.put("hhh",1);
        hash.put("ggg",2);
        hash.put("www",3);
        Set<String> keySet = hash.keySet();
        System.out.println(keySet);
        Collection<Integer> values = hash.values();
        System.out.println(values);
        Set<Map.Entry<String, Integer>> entrySet = hash.entrySet();
        System.out.println(entrySet);

 7. 遍历 Map

// 使用增强for循环遍历entrySet
for (Map.Entry<K, V> entry : map.entrySet()) {
    K key = entry.getKey();
    V value = entry.getValue();
}

// 使用lambda表达式遍历
map.forEach((key, value) -> {
    System.out.println(key + ": " + value);
});

 

        Map<String,Integer> hash = new HashMap<>();
        hash.put("hhh",1);
        hash.put("ggg",2);
        hash.put("www",3);
        //遍历key
        for(String key :hash.keySet()) {
            System.out.print(key+" ");
        }
        System.out.println();
        //遍历values
        for(Integer value :hash.values()) {
            System.out.print(value+" ");
        }
        System.out.println();
        //遍历整个map
        for (Map.Entry<String,Integer> entry :hash.entrySet()) {
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
        //lambda 遍历map
        System.out.println();
        hash.forEach((key,value)->{
            System.out.println(key + ":" + value);
        });

8. 默认值处理 

V value = map.getOrDefault(K key, V defaultValue);  // 如果key存在,返回对应的值,否则返回默认值

String类

1.字符串连接

String.concat(String str)

将给定的字符串拼接到当前字符串的末尾。相当于 + 操作符,但效率较高。 

String str = "Hello";
str = str.concat(" World");  // str = "Hello World"

2.字符串比较

1)  判断当前字符串和指定字符串是否相等。比较的是字符序列是否相同。

String.equals(Object obj)
String str1 = "Hello";
String str2 = "hello";
boolean isEqual = str1.equals(str2);  // false

2) 忽略大小写比较两个字符串是否相等。

String.equalsIgnoreCase(String anotherString)
String str1 = "Hello";
String str2 = "hello";
boolean isEqual = str1.equalsIgnoreCase(str2);  // true

 3)字符串按字典顺序比较,返回一个整数:

  • 0 表示两个字符串相等;
  • < 0 表示当前字符串在字典序中小于给定字符串;
  • > 0 表示当前字符串在字典序中大于给定字符串。
String.compareTo(String anotherString)
String str1 = "apple";
String str2 = "banana";
int result = str1.compareTo(str2);  // result < 0

 4)忽略大小写进行字典序比较。

String str1 = "apple";
String str2 = "APPLE";
int result = str1.compareToIgnoreCase(str2);  // result == 0

3.字符串查找 

1)返回指定子字符串首次出现的索引位置。如果没有找到,返回 -1

String.indexOf(String str)
String str = "Hello, World!";
int index = str.indexOf("W");  // index = 7
int index = str.indexOf("M");  // index = -1

 2)返回指定子字符串最后一次出现的索引位置。

String.lastIndexOf(String str)
        String str = "aaaaabbbbba";
        int index = str.lastIndexOf("a"); //index=10

3)判断当前字符串是否包含指定的子字符串,返回布尔值。 

String.contains(CharSequence sequence)
String str = "Hello, World!";
boolean contains = str.contains("World");  // true

4)判断当前字符串是否以指定的前缀开头。 

String.startsWith(String prefix)
String str = "Hello";
boolean startsWith = str.startsWith("He");  // true

5)判断当前字符串是否以指定的后缀结尾。

String.endsWith(String suffix)
String str = "Hello";
boolean endsWith = str.endsWith("lo");  // true

4.字符串替换和修改 

1)替换字符串中的字符。返回一个新的字符串,原字符串不变。

String.replace(char oldChar, char newChar)
String str = "hello";
String newStr = str.replace('l', 'p');  // newStr = "heppo"

 2)字符串截取

1)返回从指定索引开始到字符串末尾的子字符串

String.substring(int beginIndex)
String str = "Hello World!";
String subStr = str.substring(6);  // subStr = "World!"

2) 返回从 beginIndexendIndex 之间的子字符串。

String.substring(int beginIndex, int endIndex)
String str = "Hello World!";
String subStr = str.substring(0, 5);  // subStr = "Hello"

 5.字符串转换

 1)将字符串转换为小写字母。

String.toLowerCase()
String str = "HELLO";
String lowerStr = str.toLowerCase();  // lowerStr = "hello"

 2)将字符串转换为大写字母。

String.toUpperCase()
String str = "hello";
String upperStr = str.toUpperCase();  // upperStr = "HELLO"

 3)去掉字符串前后的空白字符。

String.trim()
String str = "   Hello World!   ";
String trimmedStr = str.trim();  // trimmedStr = "Hello World!"

 4)将其他类型的数据(如 intbooleanchar 等)转换为字符串。

String.valueOf()
int num = 100;
String str = String.valueOf(num);  // str = "100"

 6.其他常用方法

1)根据正则表达式将字符串拆分成数组。

String.split(String regex)
String str = "apple,banana,orange";
String[] arr = str.split(",");  // arr = ["apple", "banana", "orange"]

2) 将多个字符串连接成一个字符串,中间用指定的分隔符。

String.join(CharSequence delimiter, CharSequence... elements)
String result = String.join(",", "apple", "banana", "orange");  // "apple,banana,orange"

StringBuffer(重)

1.追加字符串:append

将指定的内容追加到 StringBuffer 末尾。

        StringBuffer stringBuffer = new StringBuffer(); // 默认容量为16
        stringBuffer.append("hello");
        stringBuffer.append(" ");
        stringBuffer.append("world!"); // hello world!

2.插入字符串:insert 

将指定的内容插入到指定位置。 

        StringBuffer stringBuffer = new StringBuffer(); // 默认容量为16
        stringBuffer.append("hello");
        stringBuffer.append(" ");
        stringBuffer.append("world!");
        stringBuffer.insert(6,"hi ");  // hello hi world!

 3.删除字符串:delete 和 deleteCharAt

  • delete(start, end):删除从 start 到 end(不包括 end)的字符。
  • deleteCharAt(index):删除指定索引处的字符。
        StringBuffer stringBuffer = new StringBuffer(); // 默认容量为16
        stringBuffer.append("hello");
        stringBuffer.append(" ");
        stringBuffer.append("world!");
        stringBuffer.delete(0,5);  //  world!
        stringBuffer.append("hello");
        stringBuffer.deleteCharAt(stringBuffer.length()-1); // hell

 4.反转字符串:reverse

StringBuffer 中的字符序列反转。

        stringBuffer.append("hello");
        stringBuffer.reverse(); // olleh

5.转换为 StringtoString 

        stringBuffer.append("hello");
        String str = stringBuffer.toString(); //hello

 ..................

StringBuilder(线程不安全) 跟StringBuffer(线程安全)类似 功能基本一致

String -> integer  -> char数组


Math类

列举一些主要的数学函数

1.绝对值:abs

返回参数的绝对值。

Math.abs(-5);  // 5
Math.abs(3.14);  // 3.14

 平方根:sqrt

返回参数的平方根。如果参数为负数,则返回 NaN

Math.sqrt(16);  // 4.0
Math.sqrt(2);   // 1.4142135623730951

幂运算:pow 

返回第一个参数的第二个参数次方。

Math.pow(2, 3);  // 8.0
Math.pow(3, 0);  // 1.0
最大值和最小值:max 和 min

返回两个数中的最大值或最小值。

Math.max(5, 10);  // 10
Math.min(5, 10);  // 5

四舍五入:round 

 返回最接近的整数(四舍五入),并将结果作为 long 类型返回。

Math.round(3.6);  // 4
Math.round(3.4);  // 3

向上取整:ceil

返回大于或等于参数的最小整数值,结果是 double 类型。 

Math.ceil(3.1);  // 4.0
Math.ceil(3.9);  // 4.0
指数运算:exp

计算 e 的 x 次方,等效于 Math.pow(Math.E, x)

Math.exp(1);  // 2.718281828459045

数组(Arrays)类

1.数组的排序

1)默认是以升序状态

Arrays.sort(array)
        int[] arr = {10,5,12,45,32,20,18};
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));

 

2)用于自定义排序规则。适用于对象类型的数组  降序排序

        Integer[] arr = {10,5,12,45,32,20,18};
        Arrays.sort(arr,(a,b)-> b - a);
        System.out.println(Arrays.toString(arr));
        //[45, 32, 20, 18, 12, 10, 5]

2.数组转化字符串

1)一维数组(常用)

Arrays.toString(array)
int[] arr = {1, 2, 3};
String str = Arrays.toString(arr);  // "[1, 2, 3]"

 2)二维数组

Arrays.deepToString(array)
int[][] arr = {{1, 2}, {3, 4}};
String str = Arrays.deepToString(arr);  // "[[1, 2], [3, 4]]"

3.数组复制

1)创建一个新数组,包含原数组的前 newLength 个元素。如果新长度大于原数组长度,则新增元素会被填充为默认值(如 0)。

Arrays.copyOf(array, newLength)
int[] arr = {1, 2, 3};
int[] newArr = Arrays.copyOf(arr, 5);  // [1, 2, 3, 0, 0]

2) 创建一个新数组,复制原数组指定范围的元素(from 包含,to 不包含)。 

Arrays.copyOfRange(array, from, to)
int[] arr = {1, 2, 3, 4, 5};
int[] subArr = Arrays.copyOfRange(arr, 1, 4);  // [2, 3, 4]

4.数组填充

1)将数组中的所有元素设置为指定的值。 

Arrays.fill(array, value)
int[] arr = new int[5];
Arrays.fill(arr, 7);  // [7, 7, 7, 7, 7]

 2)将数组中从 fromIndextoIndex 范围内的元素设置为指定值。 

Arrays.fill(array, fromIndex, toIndex, value) 
int[] arr = new int[5];
Arrays.fill(arr, 1, 4, 9);  // [0, 9, 9, 9, 0]

5.数组比较

判断两个数组是否相等。数组相等的标准是数组的长度相同且对应位置的元素相等。 

Arrays.equals(array1, array2)
int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 3};
boolean isEqual = Arrays.equals(arr1, arr2);  // true

其他操作 :

常见数据类型的最大值和最小值

Integer.MAX_VALUE / Integer.MIN_VALUE
Long.MAX_VALUE / Long.MIN_VALUE
Float.MAX_VALUE / Float.MIN_VALUE
Double.MAX_VALUE / Double.MIN_VALUE

 集合转化成数组

        // 将 List 转换为数组
        String[] array = list.toArray(new String[0]);
        // 将 Set 转换为数组
        String[] array = set.toArray(new String[0]);
        // 将 Queue 转换为数组
        String[] array = queue.toArray(new String[0]);
        // 将 Map 的键转换为数组
        String[] keys = map.keySet().toArray(new String[0]);

        // 将 Map 的值转换为数组
        String[] values = map.values().toArray(new String[0]);
  • 对于 ListSet 和 Queue,可以使用 toArray() 方法直接将其转换为数组。
  • 对于 Map,你可以选择将其键、值或条目转换为数组,使用 keySet()values() 或 entrySet() 方法。

字符与字符串的转换 

1)字符数组转字符串String.valueOf() 或 String 构造函数。

char[] charArray = {'a', 'b', 'c'};
String str = new String(charArray);  // str = "abc"

2)字符串转字符:使用 charAt() 获取指定位置的字符。

String str = "hello";
char ch = str.charAt(0);  // ch = 'h'

 字符串和整型之间的转化

1)字符串转整型(String -> int)

要将字符串转换为整型,可以使用 Integer.parseInt()Integer.valueOf() 方法。

String str = "123";
int num = Integer.parseInt(str);
System.out.println(num);  // 输出:123
String str = "123";
int num = Integer.valueOf(str);  // 返回的是 Integer 对象
System.out.println(num);  // 输出:123

 2)整型转字符串(int -> String)

要将整型转换为字符串,可以使用 String.valueOf()Integer.toString() 方法。

int num = 123;
String str = String.valueOf(num);
System.out.println(str);  // 输出:"123"
int num = 123;
String str = Integer.toString(num);
System.out.println(str);  // 输出:"123"

 .............................

 还有遗留的等遇到会慢慢补充,这个会长期更新...

感谢大家的支持!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2253465.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用 NotePad++ 运行 Java 程序

安装包 网盘链接 下载得到的安装包: 安装步骤 双击安装包开始安装. 安装完成: 配置编码 用 NotePad 写 Java 程序时, 需要设置编码. 在 设置, 首选项, 新建 中进行设置, 可以对每一个新建的文件起作用. 之前写的文件不起作用. 在文件名处右键, 可以快速打开 CMD 窗口, 且路…

【金猿CIO展】复旦大学附属中山医院计算机网络中心副主任张俊钦:推进数据安全风险评估,防范化解数据安全风险,筑牢医疗数据安全防线...

‍ 张俊钦 本文由复旦大学附属中山医院计算机网络中心副主任张俊钦撰写并投递参与“数据猿年度金猿策划活动——2024大数据产业年度优秀CIO榜单及奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 数据要素时代&#xff0c;医疗数据已成为医院运营与决策的重要基石…

计算机视觉——相机标定(Camera Calibration)

文章目录 1. 简介2. 原理3. 相机模型3.1 四大坐标系3.2 坐标系间的转换关系3.2.1 世界坐标系到相机坐标系3.2.2 相机坐标系到图像坐标系3.2.3 像素坐标系转换为图像坐标系3.2.4 世界坐标转换为像素坐标 3.3 畸变3.3.1 畸变类型3.3.1.1 径向畸变&#xff08;Radial Distortion&a…

Go学习:编译器(编写程序时应该注意的点)

一、注意&#xff1a; LiteIDE工具&#xff1a; &#xff08;1&#xff09;创建项目后&#xff0c;同一个目录下的go文件 只能有一个 main函数&#xff0c;如果多个文件都有main函数&#xff0c;会出现编译错误。例如&#xff1a; &#xff08;2&#xff09;如果一个目录下多…

【计算机网络】实验9: 路由信息协议RIP

实验9 路由信息协议RIP 一、实验目的 本实验的主要目的是深入理解RIP&#xff08;路由信息协议&#xff09;的工作原理&#xff0c;以便掌握其在网络中的应用。通过对RIP的学习&#xff0c;我们将探讨该协议如何实现路由选择和信息传播&#xff0c;从而确保数据包能够在网络中…

如何选择适合的开源架构框架

如何选择适合的开源架构框架 一、引言二、明确项目需求 —— 筑牢基石&#xff08;一&#xff09;功能需求剖析 —— 精准锁定核心&#xff08;二&#xff09;性能要求考量 —— 追求极致卓越&#xff08;三&#xff09;可扩展性需求 —— 放眼未来蓝图 三、评估开源框架特性 —…

MongoDB-BSON 协议与类型

前言&#xff1a; MongoDB 是一个高性能、无模式的 NoSQL 数据库&#xff0c;广泛应用于大数据处理和实时数据存储。作为一个数据库系统&#xff0c;MongoDB 的核心之一就是其使用的 BSON&#xff08;Binary JSON&#xff09;格式&#xff0c;它用于存储数据以及在客户端和数据…

jmeter如何导出中文版的测试报告?

文章目录 0、初始步骤&#xff1a;把报告模板换成中文形式1、首先添加一份聚合报告2、然后点开【聚合报告】3&#xff0c;生成报告3.1 选择【工具】-【generate HTML report】3.2 【generate HTML report】参数详解3.3 、最后点击 【generate report】直接生成。 声明&#xff…

等差数列末项计算

等差数列末项计算 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 给出一个等差数列的前两项a1&#xff0c;a2&#xff0c;求第n项是多少。 输入 一行&#xff0c;包含三个整数a1&#xff0c;a2&#x…

芯科科技突破性超低功耗Wi-Fi 6和低功耗蓝牙5.4模块加速设备部署

致力于以安全、智能无线连接技术&#xff0c;建立更互联世界的全球领导厂商Silicon Labs&#xff08;亦称“芯科科技”&#xff0c;今日宣布推出SiWx917Y超低功耗Wi-Fi 6和低功耗蓝牙&#xff08;Bluetooth LE&#xff09;5.4模块。 作为成功的第二代无线开发平台的新产品&…

Golang内存模型总结1(mspan、mcache、mcentral、mheap)

1.内存模型 1.1 操作系统存储模型 从上到下分别是寄存器、高速缓存、内存、磁盘&#xff0c;其中越往上速度越快&#xff0c;空间越小&#xff0c;价格越高。 关键词是多级模型和动态切换 1.2 虚拟内存与物理内存 虚拟内存是一种内存管理技术&#xff0c;允许计算机使用比…

重生之我在异世界学编程之C语言:操作符篇

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文1. 算术操作符2. 关系&#xff0…

深度学习图像增强介绍

目录 一、引言二、常用数据增广方法三、图像变换类3.1 AutoAugment3.2 RandAugment 四、图像裁剪类4.1 Cutout4.2 RandomErasing4.3 HideAndSeek 五、图像混叠5.1 Mixup5.2 Cutmix 六、结论 一、引言 在图像分类任务中&#xff0c;图像数据的增广是一种常用的正则化方法&#…

HBU深度学习实验14-循环神经网络(1)

前言&#xff0c;预备知识 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一类具有短期记忆能力的神经网络&#xff0e;在循环神经网络中&#xff0c;神经元不但可以接受其他神经元的信息&#xff0c;也可以接受自身的信息&#xff0c;形成具…

使用GDI对象绘制UI时需要注意的若干细节问题总结

目录 1、一个bitmap不能同时被选进两个dc中 2、CreateCompatibleDC和CreateCompatibleBitmap要使用同一个dc作为参数 3、不能删除已经被选入DC中的GDI对象 4、使用完的GDI对象&#xff0c;要将之释放掉&#xff0c;否则会导致GDI对象泄漏 5、CreateCompatibleBitmap返回错…

【Java-数据结构篇】Java 中栈和队列:构建程序逻辑的关键数据结构基石

我的个人主页 我的专栏&#xff1a;Java-数据结构&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞❤ 收藏❤ 一、引言 1. 栈与队列在编程中的角色定位 栈和队列作为两种基本的数据结构&#xff0c;在众多编程场景中都有着独特的地位。它们为数据的有序…

洛谷P2670扫雷游戏(Java)

三.P2670 [NOIP2015 普及组] 扫雷游戏 题目背景 NOIP2015 普及组 T2 题目描述 扫雷游戏是一款十分经典的单机小游戏。在 n 行 m列的雷区中有一些格子含有地雷&#xff08;称之为地雷格&#xff09;&#xff0c;其他格子不含地雷&#xff08;称之为非地雷格&#xff09;。玩…

vue2:Cascader 级联选择器中加载两种不同的数据结构

前言 因UI调整,需要将el-tree控件更换为级联选择器,而在原树形控件中,加载了两种不同的数据结构,(参见vue2:树形控件el-tree中加载两种不同结构的数据_vue2 树形插件-CSDN博客)所以现在级联选择器中也需要加载这两种不同的数据结构。 问题 原本以为处理方式差不多,在…

【10】MySQL中的加密功能:如何使用MD5加密算法进行数据加密

文章目录 1. MySQL加密功能概述2. MD5加密算法3. 在MySQL中使用MD5加密4. 使用更安全的加密方法总结 在现代的数据库应用中&#xff0c;数据的安全性和隐私性变得尤为重要。无论是存储用户的个人信息&#xff0c;还是保护敏感的业务数据&#xff0c;确保这些数据不会被未授权访…

【SARL】单智能体强化学习(Single-Agent Reinforcement Learning)《纲要》

&#x1f4e2;本篇文章是博主强化学习&#xff08;RL&#xff09;领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅…