Java 集合、迭代器
Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,除了集合,该框架也定义了几个 Map 接口和类。Map 里存储的是键/值对。尽管 Map 不是集合,但是它们完全整合在集合中。
序号 | 接口描述 |
1 | Collection Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。 Collection 接口存储一组不唯一,无序的对象。 |
2 | List List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。 List 接口存储一组不唯一,有序(插入顺序)的对象。 |
3 | Set Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。 Set 接口存储一组唯一,无序的对象。 |
4 | SortedSet 继承于Set保存有序的集合。 |
5 | Map Map 接口存储一组键值对象,提供key(键)到value(值)的映射。 |
6 | Map.Entry 描述在一个Map中的一个元素(键/值对)。是一个 Map 的内部接口。 |
7 | SortedMap 继承于 Map,使 Key 保持在升序排列。 |
8 | Enumeration 这是一个传统的接口和定义的方法,通过它可以枚举(一次获得一个)对象集合中的元素。这个传统接口已被迭代器取代。 |
常用集合:
Collection :
-List 接口:元素按进入先后有序保存,可重复,插入删除会引起其他元素位置改变
-----LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全,效率高,可以存储重复元素
-----ArrayList 底层数据结构是数组,查询快,增删慢,线程不安全,效率高,可以存储重复元素
-----Vector 底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素
------------Stack 是Vector类的实现类
-Set 接口: 仅接收一次,无序不可重复,并做内部排序,插入和删除不会引起元素位置改变
-----HashSet 使用hash表(数组)存储元素
------------LinkedHashSet 链表维护元素的插入次序
-----TreeSet 底层实现为二叉树,元素排好序Map :
-----Hashtable 接口实现类, 同步, 线程安全
-----HashMap 接口实现类 ,无同步, 线程不安全
------------LinkedHashMap 双向链表和哈希表实现
------------WeakHashMap
-----TreeMap 红黑树对所有的key进行排序
-----IdentifyHashMap
一、Collection
1.1 Java List
以下情况使用 ArrayList :
- 频繁访问列表中的某一个元素。
- 只需要在列表末尾进行添加和删除元素操作。
以下情况使用 LinkedList :
- 你需要通过循环迭代来访问列表中的某些元素。
- 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。
1.1.1 ArrayList
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。
import java.util.*;public class RunoobTest {public static void main(String[] args) {ArrayList<String> sites = new ArrayList<String>();sites.add("Google");sites.add("Runoob"); //1、添加:元素到sites对象中sites.set(0,"Yahu"); //2、第一个参数为索引位置,第二个为要修改的值、sites.remove(1); //3、删除第2个元素System.out.println(sites.size()); //4、输出对象长度for (int i = 0; i < sites.size(); i++) { //5、for循环迭代输出System.out.println(sites.get(i));}for (String i : sites) { //6、for-each循环迭代输出System.out.println(i);}ArrayList<Integer> li=new ArrayList<>(); //7、存放整数元素Collections.sort(sites); //8、Collections类中sort() 方法可以对字符或数字列表进行排序排序System.out.println(sites);}
}
常规方法:
方法 | 描述 (arraylist对象:arr) |
add() | 将元素插入到指定位置的 arraylist 中 |
addAll() | 添加集合中的所有元素到 arraylist 中 |
clear() | 删除 arraylist 中的所有元素 |
clone() | 复制一份 arraylist ArrayList<String> arrs = (ArrayList<String>)arr.clone(); |
contains() | 判断元素是否在 arraylist |
get() | 通过索引值获取 arraylist 中的元素 |
indexOf() | 返回 arraylist 中元素的索引值 |
removeAll() | 删除存在于指定集合中的 arraylist里的所有元素 |
remove() | 删除 arraylist 里的单个元素 |
size() | 返回 arraylist 里元素数量 |
isEmpty() | 判断 arraylist 是否为空 |
subList() | 截取部分 arraylist 的元素 sites.subList(1, 3);//截取第一个和第二个元素 |
set() | 替换 arraylist 中指定索引的元素 |
sort() | 对 arraylist 元素进行排序 |
toArray() | 将 arraylist 转换为数组 |
toString() | 将 arraylist 转换为字符串 |
lastIndexOf() | 返回指定元素在 arraylist 中最后一次出现的位置 int position = arr.lastIndexOf("YL"); |
ensureCapacity() | 设置指定容量大小的 arraylist lastIndexOf() 返回指定元素在 arraylist 中最后一次出现的位置 |
retainAll() | 保留 arraylist 中在指定集合中也存在的那些元素 arr.retainAll(arr2); |
containsAll() | 查看 arraylist 是否包含指定集合中的所有元素 boolean result = arr.containsAll(arr2); |
trimToSize() | 将 arraylist 中的容量调整为数组中的元素个数 arr.trimToSize(); |
removeRange() | 删除 arraylist 中指定索引之间存在的元素 arr.removeRange(1, 3); |
replaceAll() | 将给定的操作内容替换掉数组中每一个元素 arr.replaceAll(e -> e.toUpperCase()); |
removeIf() | 删除所有满足特定条件的 arraylist 元素 arr.removeIf(e -> e.contains("Tao")); |
forEach() | 遍历 arraylist 中每一个元素并执行特定操作 :将ArrayList对象的表达式作为 forEach() 方法的参数传入,lambda 表达式将动态数组中的每个元素乘以 10,然后输出结果 arr.forEach((e) -> { |
实例:
import java.util.*;
//遍历ArrayList
public class Test{public static void main(String[] args) {List<String> list=new ArrayList<String>();list.add("Hello");list.add("World");list.add("HA");//第一种遍历:使用 For-Each 遍历 Listfor (String str : list) { //也可以改写for(int i=0;i<list.size();i++) 这种形式System.out.println(str);}//第二种遍历:把链表变为数组相关的内容进行遍历String[] strArray=new String[list.size()];list.toArray(strArray);for(int i=0;i<strArray.length;i++) //这里也可以改写为 for(String str:strArray) 这种形式{System.out.println(strArray[i]);}//第三种遍历:使用迭代器进行相关遍历Iterator<String> ite=list.iterator();while(ite.hasNext())//判断下一个元素之后有值{System.out.println(ite.next());}}
}
//[Hello,World,HA]
1.1.2 LinkedList
链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。
// 引入 LinkedList 类
import java.util.LinkedList;public class RunoobTest {public static void main(String[] args) {LinkedList<String> sites = new LinkedList<String>();sites.add("Google");//1、添加元素sites.add("Runoob");//2、使用 addFirst() 在头部添加元素sites.addFirst("BaiDu");//3、尾部添加sites.addLast("Wiki");//4、使用 removeFirst() 移除头部元素sites.removeFirst();//5、使用 removeLast() 移除尾部元素sites.removeLast();//6、使用 getFirst() 获取头部元素System.out.println(sites.getFirst());//7、使用 getLast() 获取尾部元素System.out.println(sites.getLast());//9、迭代获取元素for (int size = sites.size(), i = 0; i < size; i++) {System.out.println(sites.get(i));}//10、for-each 迭代for (String i : sites) {System.out.println(i);}//11、foreach遍历方式 sites.forEach(ites->{System.out.println(ites);});System.out.println(sites);}
}
方法 | 描述 |
---|---|
public boolean add(E e) | 链表末尾添加元素,返回是否成功,成功为 true,失败为 false。 |
public void add(int index, E element) | 向指定位置插入元素。 |
public boolean addAll(Collection c) | 将一个集合的所有元素添加到链表后面,返回是否成功,成功为 true,失败为 false。 |
public boolean addAll(int index, Collection c) | 将一个集合的所有元素添加到链表的指定位置后面,返回是否成功,成功为 true,失败为 false。 |
public void addFirst(E e) | 元素添加到头部。 |
public void addLast(E e) | 元素添加到尾部。 |
public boolean offer(E e) | 向链表末尾添加元素,返回是否成功,成功为 true,失败为 false。 |
public boolean offerFirst(E e) | 头部插入元素,返回是否成功,成功为 true,失败为 false。 |
public boolean offerLast(E e) | 尾部插入元素,返回是否成功,成功为 true,失败为 false。 |
public void clear() | 清空链表。 |
public E removeFirst() | 删除并返回第一个元素。 |
public E removeLast() | 删除并返回最后一个元素。 |
public boolean remove(Object o) | 删除某一元素,返回是否成功,成功为 true,失败为 false。 |
public E remove(int index) | 删除指定位置的元素。 |
public E poll() | 删除并返回第一个元素。 |
public E remove() | 删除并返回第一个元素。 |
public boolean contains(Object o) | 判断是否含有某一元素。 |
public E get(int index) | 返回指定位置的元素。 |
public E getFirst() | 返回第一个元素。 |
public E getLast() | 返回最后一个元素。 |
public int indexOf(Object o) | 查找指定元素从前往后第一次出现的索引。 |
public int lastIndexOf(Object o) | 查找指定元素最后一次出现的索引。 |
public E peek() | 返回第一个元素。 |
public E element() | 返回第一个元素。 |
public E peekFirst() | 返回头部元素。 |
public E peekLast() | 返回尾部元素。 |
public E set(int index, E element) | 设置指定位置的元素。 |
public Object clone() | 克隆该列表。 |
public Iterator descendingIterator() | 返回倒序迭代器。 |
public int size() | 返回链表元素个数。 |
public ListIterator listIterator(int index) | 返回从指定位置开始到末尾的迭代器。 |
public Object[] toArray() | 返回一个由链表元素组成的数组。 |
public T[] toArray(T[] a) | 返回一个由链表元素转换类型而成的数组。 |
使用较少,类比ArrayList,不举例。
1.1.3 Vector
Vector是一种老的动态数组,是线程同步的,效率很低,一般不使用。
1.2 Java Set
1.2.1 HashSet
HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。HashSet 允许有 null 值,是无序的,即不会记录插入的顺序。HashSet 非线程安全, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的,在多线程访问时必须显式同步对 HashSet 的并发访问。
// 引入 HashSet 类
import java.util.HashSet;public class RunoobTest {public static void main(String[] args) {HashSet<String> sites = new HashSet<String>();sites.add("Google");sites.add("Runoob");sites.add("Taobao");sites.add("Zhihu");sites.add("Runoob"); //1、重复的元素不会被添加System.out.println(sites.contains("Taobao"));//2、判断元素是否存在于集合当中sites.remove("Taobao"); //3、删除元素,删除成功返回 true,否则为 falsesites.clear();//4、清除全部 for (String i : sites) { //5、for-each 迭代System.out.println(i);}/*6、注意:Set无序,无法使用元素下标输出元素遍历集合for (int size = sites.size(), i = 0; i < size; i++)*///7、foreach遍历方式 sites.forEach(ites->{System.out.println(ites);});System.out.println(sites);}
}
1.2.2 LinkedHashSet
底层数据结构采用链表和哈希表共同实现,链表保证了元素的顺序与存储顺序一致,哈希表保证了元素的唯一性。线程不安全,效率高。
1.2.3 TreeSet
底层数据结构采用二叉树来实现,元素唯一且已经排好序。
二、Map
2.1 Java Map
2.1.1 HashMap
HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
HashMap 是无序的,即不会记录插入的顺序。HashMap 的 key 与 value 类型可以相同也可以不同,可以是字符串(String)类型的 key 和 value,也可以是整型(Integer)的 key 和字符串(String)类型的 value。HashMap 中的元素是对象,一些常见的基本类型可以使用它的包装类。
// 引入 HashMap 类
import java.util.HashMap;public class RunoobTest {public static void main(String[] args) {//1、创建 HashMap 对象 SitesHashMap<Integer, String> Sites = new HashMap<Integer, String>();Sites.put(1, "Google");Sites.put(2, "Runoob");Sites.put(3, "Taobao");Sites.put(4, "Zhihu");System.out.println(Sites);//2、输出元素{1=Google, 2=Runoob, 3=Taobao, 4=Zhihu}System.out.println(Sites.get(3));//输出Taobaofor (Integer i : Sites.keySet()) {System.out.println("key: " + i + " value: " + Sites.get(i));}//3、返回所有 value 值for(String value: Sites.values()) {//4、输出每一个valueSystem.out.print(value + ", ");//5、使用Entry对象遍历Map<String, Integer> map = new HashMap<>();map. put("yly", 177);map. put("yrc" ,176);map. put("zcz" ,175);Set<Map.Entry<String, Integer>> set = map.entrySet();//for迭代遍历for (Map.Entry<String, Integer> entry : set) {System.out.println(entry.getKey()+entry.getValue());}}}}
}
方法 | 描述 /*HashMap<String, Integer> prices = new HashMap<>(); |
---|---|
clear() | 删除 hashMap 中的所有键/值对 |
clone() | 复制一份 hashMap |
isEmpty() | 判断 hashMap 是否为空 |
size() | 计算 hashMap 中键/值对的数量 |
put() | 将键/值对添加到 hashMap 中 |
putAll() | 将所有键/值对添加到 hashMap 中,已存在的将会被替换 |
putIfAbsent() | 如果 hashMap 中不存在指定的key键,则将指定的键/值对插入到 hashMap 中 |
remove() | 删除 hashMap 中指定键 key 的映射关系 |
containsKey() | 检查 hashMap 中是否存在指定的 key 对应的映射关系 |
containsValue() | 检查 hashMap 中是否存在指定的 value 对应的映射关系 |
replace() | 替换 hashMap 中指定的 key 对应的 value // 替换key为2的映射 |
replaceAll() | 将 hashMap 中的所有映射关系替换成给定的函数所执行的结果 |
get() | 获取指定 key 对应的 value |
getOrDefault() | 获取指定 key 对应的 value,如果找不到 key ,则返回设置的默认值 // Not Found - 如果 HashMap 中没有该 key,则返回默认值 |
forEach() | 对 hashMap 中的每个映射执行指定的操作 prices.forEach((key, value) -> { |
entrySet() | 返回 hashMap 中所有映射项的集合集合视图 System.out.println("sites HashMap: " + sites); /*sites HashMap: {1=Google, 2=Runoob, 3=Taobao} |
keySet() | 返回 hashMap 中所有 key 组成的集合视图 |
values() | 返回 hashMap 中存在的所有 value 值 |
merge() | 添加键值对到 hashMap 中,如果原来有那就是更新键值对 int returnedValue = prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue); |
compute() | 对 hashMap 中指定 key 的值进行重新计算 int newPrice = prices.compute("Shoes", (key, value) -> value - value * 10/100); /*HashMap: {Pant=150, Bag=300, Shoes=200} |
computeIfAbsent() | 对 hashMap 中指定 key 的值进行重新计算,如果不存在这个 key,则添加到 hasMap 中 int shoesPrice = prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100); /*HashMap: {Pant=150, Bag=300, Shoes=200} |
computeIfPresent() | 对 hashMap 中指定 key 的值进行重新计算,前提是该 key 存在于 hashMap 中 /*HashMap: {Pant=150, Bag=300, Shoes=200} |
2.1.2 HashTable(略)
2.1.1 TreeMap(略)
三、迭代器 (Iterator)
Java迭代器是 Java 集合框架中的一种机制,是一种用于遍历集合(如列表、集合和映射等)的接口。它提供了一种统一的方式来访问集合中的元素,而不需要了解底层集合的具体实现细节。迭代器不是一个集合,它是一种用于访问集合的方法。以下图示主要方法。
//主要是作为循环和遍历
import java.util.ArrayList;
import java.util.Iterator;public class RunoobTest {public static void main(String[] args) {// 创建集合ArrayList<Integer> sites = new ArrayList<Integer>();sites.add("1");sites.add("2");sites.add("3");sites.add("4");// 获取迭代器Iterator<Integer> it = sites.iterator();// 输出集合中的第一个元素System.out.println(it.next());//1// 输出集合中的所有元素while(it.hasNext()) {System.out.print(it.next());}//1 2 3 4 for(Integer i:sites){System.out.print(i+" ");}//1 2 3 4while(it.hasNext()) {Integer i = it.next();if(i < 10) { it.remove(); //删除小于 10 的元素}System.out.println(sites);//[]}
/*注意:Java 迭代器是一种单向遍历机制,即只能从前往后遍历集合中的元素,不能往回遍历。同时,在使用迭代器遍历集合时,不能直接修改集合中的元素,而是需要使用迭代器的 remove() 方法来删除当前元素*/
}
import java.util.ArrayList;
import java.util.Iterator;public class Person(String name) {private String name;public void setName(String name){this.name = name;}public String getName(){return name;}
}
public class test {public static void main(String[] args) {ArrayList<Person> array = new ArrayList<Person>();Person p1 = new Person("Y");Person p2 = new Person("L");Person p3 = new Person("Y");Person p4 = new Person("G");array.add(p1);array.add(p2);array.add(p3);array.add(p4);Iterator<Person> iterator = array.iterator();for (Person pp : array){System.out.print(pp.getName());//Y L Y G }array.forEach(obj -> System.out.print(obj.getName()));//Y L Y G for(Person p : array){p.setName("B");}while(iterator.hasNext()){System.out.print(iterator.next().getName()); //B B B B}}
}
参考资料:菜鸟教程 - 学的不仅是技术,更是梦想!
参考文献1:详解java集合,Collection,list,set,map汇总 - 知乎 (zhihu.com)
参考文献2:java集合超详解_java集合使用-CSDN博客
参考文献4:Java迭代器(iterator详解以及和for循环的区别)_java里迭代器能在for循环中使用么-CSDN博客
相关文章:

Java 集合、迭代器
Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queu…...

在 Docker 中启动 ROS2 里的 rivz2 和 rqt 出现错误的解决方法
1. 出现错误: 运行 ros2 run rivz2 rivz2 ,报错如下 : No protocol specified qt.qpa.xcb: could not connect to display :1 qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was f…...

使用securecrt+xming通过x11访问ubuntu可视化程序
windows使用securecrtxming通过x11访问ubuntu可视化程序 windows机器IP:192.168.9.133 ubuntu-desktop20.04机器IP:192.168.9.190 windows下载xming并安装 按照图修改xming配置 开始->xming->Xlaunch 完成xming会在右下角后台运行 windows在…...

红队打靶练习:HEALTHCARE: 1
目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 目录探测 1、gobuster 2、dirsearch WEB web信息收集 gobuster cms sqlmap 爆库 爆表 爆列 爆字段 FTP 提权 信息收集 本地提权 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Inte…...

Java IO:概念和分类总结
前言 大家好,我是chowley,刚看完Java IO方面内容,特此总结一下。 Java IO Java IO(输入输出)是Java编程中用于处理输入和输出的API。它提供了一套丰富的类和方法,用于读取和写入数据到不同的设备、文件和…...

【Linux】基本命令(下)
目录 head指令 && tail指令 head指令 tail指令 find指令 grep指令 zip/unzip指令 tar指令 时间相关的指令 date显示 1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下&…...

腾讯云游戏联机服务器配置价格表,4核16G/8核32G/4核32G/16核64G
2024年更新腾讯云游戏联机服务器配置价格表,可用于搭建幻兽帕鲁、雾锁王国等游戏服务器,游戏服务器配置可选4核16G12M、8核32G22M、4核32G10M、16核64G35M、4核16G14M等配置,可以选择轻量应用服务器和云服务器CVM内存型MA3或标准型SA2实例&am…...

面试经典150题——长度最小的子数组
"In the midst of winter, I found there was, within me, an invincible summer." - Albert Camus 1. 题目描述 2. 题目分析与解析 首先理解题意,题目要求我们找到一个长度最小的 连续子数组 满足他们的和大于target,需要返回的是子数组的…...

业务流程
一、需求分析和设计: 在项目启动阶段,需要与业务人员和产品经理充分沟通,了解业务需求,并根据需求进行系统设计和数据库设计。这一阶段的输出通常是需求文档、系统架构设计、数据库设计等。 1.需求文档 需求文档是一份非常重要…...

ChatGPT Plus如何升级?信用卡付款失败怎么办?如何使用信用卡升级 ChatGPT Plus?
ChatGPT Plus是OpenAI提供的一种高级服务,它相较于标准版本,提供了更快的响应速度、更强大的功能,并且用户可以优先体验到新推出的功能。 尽管许多用户愿意支付 20 美元的月费来订阅 GPT-4,但在实际支付过程中,特别是…...

Spring 如何配置 bean (XML 方式)
请直接看原文:Spring 如何配置 bean (XML 方式)_spring 在哪配置bean 文件-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- Java Bean 如何配置配置到 spring 容器中 基于 XM…...

揭秘外观模式:简化复杂系统的关键设计策略
前言 外观模式(Facade Pattern)是一种结构型设计模式,它隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类…...

Nginx 命令(Ubuntu)
常用命令: 1.查看错误日志: sudo vim /var/log/nginx/error.log 2.重新加载 nignx sudo systemctl reload nginx 3.立即停止Nginx服务。如果Nginx正在运行,它将被终止 sudo systemctl stop nginx 4. 禁止Nginx服务在系统重启时自动启…...

从github上拉取项目到pycharm中
有两种方法,方法一较为简单,方法二用到了git bash,推荐方法一 目录 有两种方法,方法一较为简单,方法二用到了git bash,推荐方法一方法一:方法二: 方法一: 在github上复制…...

python从入门到精通(十八):python爬虫的练习案列集合
python爬虫的练习 1.爬取天气网的北京城市历史天气数据1.1 第一种使用面向对象OOP编写爬虫1.2 第二种使用面向过程函数编写爬虫 1.爬取天气网的北京城市历史天气数据 1.1 第一种使用面向对象OOP编写爬虫 import re import requests from bs4 import BeautifulSoup import xlw…...

2.12作业
第一题:段错误。 第二题:hello world 第三题:hello 第四题:world 第五题: a: int a; b: int*a; c: int a0;int *p&a;int **q&p; d: int a[10]; e: int *a[10]; …...

树莓派4B(Raspberry Pi 4B) 使用docker搭建单机版nacos
树莓派4B(Raspberry Pi 4B) 使用docker搭建单机版nacos ⚠️ 由于树莓派上的芯片是ARM架构,而官方推出的docker镜像不适用于ARM架构,所以想用树莓派搭建最新版的Nacos服务的小伙伴们可以忽略我这篇文章了。本文基于nacos 2.0.4&am…...

C++入门学习(二十七)跳转语句—continue语句
当在循环中遇到continue语句时,它会跳过当前迭代剩余的代码块,并立即开始下一次迭代。这意味着continue语句用于跳过循环中特定的执行步骤,而不是完全终止循环。 直接看一下下面的代码更清晰: 与上一节的break语句可以做一下对比…...

JPEG图像格式加速神经网络训练--使用DCT训练CNN
JPEG图像格式加速神经网络训练 JPEG图像格式加速神经网络训练工作原理DCT系数与JPEG直接利用DCT系数阶段 1: 数据准备步骤 1: 读取JPEG文件结构步骤 2: 提取量化表和Huffman表步骤 3: 解析图像数据步骤 4: 反量化步骤 5: 获取DCT系数 阶段 2: 输入处理预处理 1: 正规化…...

【代码】Processing笔触手写板笔刷代码合集
代码来源于openprocessing,考虑到国内不是很好访问,我把我找到的比较好的搬运过来! 合集 参考:https://openprocessing.org/sketch/793375 https://github.com/SourceOf0-HTML/processing-p5.js/tree/master 这个可以体验6种笔触…...

Junit常用注解
注解是方法的“标签” 说明每个方法的“职责” Q:总共有那些注解? 参见官方的API文档 0.常用主机及其特点 BeforeClass 只会执行一次必须用static修饰常用来初始化测试需要的变量 Before 会执行多次(只要写一次)在每个Test执行执行之前执行可以和…...

【机器学习】支持向量机(SVM)
支持向量机(SVM) 1 背景信息 分类算法回顾 决策树 样本的属性非数值 目标函数是离散的 贝叶斯学习 样本的属性可以是数值或非数值目标函数是连续的(概率) K-近邻 样本是空间(例如欧氏空间)中的点目标函…...

C语言指针全解
1.什么是指针: 指针是存放地址的地方,是内存中最小单元的地址(编号),内存被分为一个个小的单元格,每一格有一个字节。比如说int a0;a会占据四个字节的大小,每个字节对应单元格都有自…...

rtt设备io框架面向对象学习-看门狗设备
1.看门狗设备基类 / components / drivers / include / drivers /下的watchdog.h 定义了如下看门狗设备基类 struct rt_watchdog_device { struct rt_device parent; const struct rt_watchdog_ops *ops; }; 看门狗设备基类的方法定义如下 struct rt_watchdog_ops { rt_err_…...

加固平板电脑丨三防智能平板丨工业加固平板丨智能城市管理
随着智能城市的不断发展,人们对于城市管理的要求也在不断提高,这就需要高效、智能的城市管理平台来实现。而三防平板就是一款可以满足这一需求的智能设备。 三防平板是一种集防水、防尘、防摔于一体的智能平板电脑,它可以在复杂的环境下稳定运…...

Redis的配置文件
目录 前言: 一、 Units 二、 INCLUDES 三、 NETWORK 3.1 bind 3.2 protected-mode 3.3 port 3.4 tcp-backlog 3.5 timeout 3.6 tcp-keepalive 3.7 示例演示 四、 GENERAL 4.1 daemonize 4.2 pidfile 4.3 loglevel 4.4 logfile 4.5 databases 五、…...

懒人精灵 之 Lua 捕获 json解析异常 ,造成的脚本停止.
Time: 2024年2月8日20:21:17 by:MemoryErHero 1 异常代码 Expected value but found T_END at character 12 异常代码 Expected value but found T_OBJ_END at character 223 处理方案 - 正确 json 示范 while true do--Expected value but found T_END at character 1--Ex…...

Python 列表操作详解
Python 是一种流行的编程语言,它以其简洁的语法和强大的功能而闻名。在 Python 中,列表是一种常用的数据结构,它可以包含任意类型的元素,并且可以随时添加或删除元素。在这篇文章中,我们将详细介绍 Python 列表的一些常…...

【Jenkins】Jenkins关闭Jenkins关闭、重启
目录 一、Jenkins关闭、重启 二、Jenkins服务的启动、停止方法。 一、Jenkins关闭、重启 1.关闭Jenkins 只需要在访问jenkins服务器的网址url地址后加上exit,关闭Jenkins服务。 例如:http://localhost:8081/exit 2.重启Jenkies 只有在Jenkins服务启动…...

【Linux】学习-动静态库
动静态库 头文件与库的区别 头文件一般而言,是声明和宏定义。头文件是在预处理阶段使用的 库文件是已经编译好的二进制代码。是一种目标文件,库文件是在链接阶段使用的 对于头文件和库我们可以这样理解,就是头文件提供的是一个函数的声明&…...