Java中的数据结构 | 常用API

关于Java数据结构的一些常用API 欢迎转载,转载请注明出处:https://blog.youkuaiyun.com/u013547284/article/details/71158100 一、JAVA常用API j... 阅读详情

0.基石 | 机制

0.0 Java的流、I O

Steam

参考

常用方法

IO流

Scanner

0.1 Java中基本数据类型取值范围

Number类

Math类

0.2 Java中的强转和进制转换

0.3 Java中的泛型

介绍

Java中的泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

在这里插入图片描述——来自:菜鸟教程

泛型方法

泛型方法,该方法在调用时可以接受不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。

定义泛型方法的规则:

  • 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前
  • 每一个类型参数声明部分包含一个或多个类型参数,参数之间啊用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。。
  • 类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。
  • 泛型方法体的声明和其他方法一样。注意类型参数只能代表引用型类型,不能是原始类型(比如 int、double、char 等)。

Java 中泛型标记符:

  • E-Element (集合中的元素)
  • T-Type (Java类)
  • K-Key (键)
  • V-Value (值)
  • N-Number (数值类型)
  • ?-表示不确定的Java类型

实例:

public class GenericMethodTest
{
	// printArray
	public static < E > void printArray ( E[] inputArray)
	{
	 	// 
	 	for( E element : inputArray){
	 		System.out.printf("%s",element);
	 		}
	 	System.out.println();
	 }

	public static void main (String args[]){

		//create diffrent type of arrarys : Integer, Double ,Character
		Integer [] intArray={1,2,3};
		Double [] doubleArrary = ……
		……
		and so on

		next we could print theses arrays by using printArray
		


	}
}

有界的类型参数

可能有时候,你会想限制那些被允许传递到一个类型参数的类型种类范围。例如,一个操作数字的方法可能只希望接受Number或者Number子类的实例。这就是有界类型参数的目的。

要声明一个有界的类型参数,首先列出类型参数的名称,后跟extends关键字,最后紧跟它的上界

实例:

public class MaximumTest
{
	//比较三个值返回最大值
	public static <T extends Comparable<T> > T maximum(T x,T y ,T z )
	{
		T max = x;
		if(y.compareTo(max) > 0 ){
	 		max = y;
	 	}
	 	if(z.compareTO(max) > 0){
	 		max = z;
		 }
		 
	 return max;
	 
	 }
	 
	 public static void main (String args[])
	 {
	
		sout( "%d, %d 和 %d 中最大的数为 %d\n\n",
                   3, 4, 5, maximum( 3, 4, 5 ))
	 }

}

0.4 Iterator 迭代器

介绍

Java迭代器是Java集合框架中的一种机制,用于遍历集合(如:列表、集合和映射等)的接口。它提供了一种统一的方式来访问集合中的元素,而不需要了解底层集合的具体实现细节。
Java Iterator 不是一个集合,是一种方法。Iterator是Java迭代器最简单的实现,ListIterator是CollectionAPI中的接口,扩展了Iterator接口。
在这里插入图片描述
迭代器接口定义了几个方法,最常用的是以下三个:

  • next() - 返回迭代器的下一个元素,并将迭代器的指针移到下一个位置。
  • hasNext() - 用于判断集合中是否还有下一个元素可以访问。
  • remove() - 从集合中删除迭代器最后访问的元素。
    Iterator 类位于java.util包中,使用前需要引入它。

通过迭代器,我们可以逐个访问集合中的元素,而不需要使用传统的for循环或者索引。这种方式更加简洁和灵活,并且适用于各种类型的集合。

获取一个迭代器

import java.util.ArrayList;
import java.tuil.Iterator;

public class RunoobTest{
	public static void main(String []arg)
	{
		ArrayList <String> sites = new ArrayList<String>();
		sites.add("Google");
		sites.add("Baidu");
		
		//实例化集合的迭代器接口
		Iterator<String> it = sites.iterator();
		System.out.print(it.next());
		

返回所有集合中的元素:
代码:

while(it.hasNext())
{
 System.out.println(it.next());
 }
// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    public static void main(String[] args) {

        // 创建集合
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Zhihu");

        // 获取迭代器
        Iterator<String> it = sites.iterator();

        // 输出集合中的所有元素
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

删除操作

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    public static void main(String[] args) {
        ArrayList<Integer> numbers = new ArrayList<Integer>();
        numbers.add(12);
        numbers.add(8);
        numbers.add(2);
        numbers.add(23);
        Iterator<Integer> it = numbers.iterator();
        while(it.hasNext()) {
            Integer i = it.next();
            if(i < 10) {  
                it.remove();  // 删除小于 10 的元素
            }
        }
        System.out.println(numbers);
    }
}

注意点

PS: 使用迭代器集合的时候,如果在遍历过程中对集合进行了修改比如增删,可能会导致一个异常:ConcurrentModificationException,为了避免这个问题,可以使用迭代器自身的 remove()方法进行删除操作。

而且迭代器是一种单向遍历机制,只能从前往后遍历集合中的元素,不能往回遍历。同时,在使用迭代器遍历集合时,不能直接修改集合中的元素,而是需要使用迭代器的remove()方法删除当前元素。

0.41 Iterable

iterator为迭代器对象,而Iterable则是对iterator的封装

0.5 循环结构(提炼重点)

关于 for 循环有以下几点说明:

  • 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
  • 然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
  • 执行一次循环后,更新循环控制变量。
  • 再次检测布尔表达式。循环执行上面的过程。

在 Java5 中引入了一种主要用于数组的增强型 for 循环。

for(声明语句 : 表达式)
{
   //代码句子
}

声明语句:声明新的局部变量该变量的类型必须和数组元素类型匹配。作用域限定在循环语句块,其值与此时数组元素的值相等。

表达式:访问的数组名,或者是返回值为数组的方法。

1.数组和集合API

在这里插入图片描述

1.0 Java数组 Array

1.1 Java集合 Collection And Map

  • 继承图

Collection---->Collections Map----->SortedMap------>TreeMap

Collection---->List----->(Vector \ ArryList \ LinkedList) Map------>HashMap

Collection---->Set------>(HashSet \ LinkedHashSet \ SortedSet)
在这里插入图片描述

通常来讲集合下面包含两大类:

  • 单列-Colletion 双列-Map
  • Collection-单列
    • 可重复 List
    • (ArrayList、LinkedList、Vector)
    • 不可重复 Set
    • (HashSet(无序)、LinkedHash(添加顺序)、TreeSet(自然顺序))
  • Map-双列(键值对)
    • HashTable
    • HashMap
    • LinkedHashMap
    • WeakHashMap
    • TreeMap
    • IdentifyHashMap

1.1.1 Collection接口

在这里插入图片描述

List集合

List中主要有ArrayList、LinkedList两个实现类;Set中则是有HashSet实现类;而Queue是在JDK1.5后才出现的新集合,主要以数组和链表两种形式存在。

  • List 常用方法
A:添加功能
boolean add(E e):向集合中添加一个元素
void add(int index, E element):在指定位置添加元素
boolean addAll(Collection<? extends E> c):向集合中添加一个集合的元素。

B:删除功能
void clear():删除集合中的所有元素
E remove(int index):根据指定索引删除元素,并把删除的元素返回
boolean remove(Object o):从集合中删除指定的元素
boolean removeAll(Collection<?> c):从集合中删除一个指定的集合元素。

C:修改功能
E set(int index, E element):把指定索引位置的元素修改为指定的值,返回修改前的值。

D:获取功能
E get(int index):获取指定位置的元素
Iterator iterator():就是用来获取集合中每一个元素。

E:判断功能
boolean isEmpty():判断集合是否为空。
boolean contains(Object o):判断集合中是否存在指定的元素。
boolean containsAll(Collection<?> c):判断集合中是否存在指定的一个集合中的元素。

F:长度功能
int size():获取集合中的元素个数

G:把集合转换成数组
Object[] toArray():把集合变成数组。

asList
String[] arr = {"apple", "banana", "orange"};
List<String> list = Arrays.asList(arr);

1.1.2 Map接口

参考

1.2 工具类:Collections和Arrays

  • 它们提供提供了封装器实现(Wrapper Implementations)、数据结构算法和数组相关的应用

常用方法

  • binarySearch:二分查找

  • sort:归并排序

  • reverse:将线性表进行逆序操作

  • rotate:以某个元素为轴心将线性表“旋转”

  • swap:交换一个线性表中两个元素的位置

2.栈相关API(相关实现已由Deque负责)

2.1 Stack

创建一个栈,相关方法

 Stack<Object> stack = new Stack<>();
 stack.push(Object);
 stack.pop();
 stack.peek();//查看栈顶元素
 stack.size();
 stack.empty();//返回值为 true or false

2.x Deque 如何作为栈使用?-ArrayDeque

  • 特点
    • 容量不限(可变数组)
    • 线程不安全的,没有外部同步的情况下不能在多线程中使用
    • 作为栈来使用,效率比Stack高,作为队列使用,比LinkedList效率高
    • 不支持null值
  • 继承关系

在这里插入图片描述

3.队列相关API

3.1Queue

Queue是实现队列的接口
在这里插入图片描述首先,Queue接口是常用API,继承自Collection 接口

常用的实现类

  • LinkedList 和 PriorityQueue

常用六种方法

(不满足条件时:前者抛异常,后者返回特殊值):

  • 压入元素(添加):add()、offer()

    • 相同:未超出容量,从队尾压入元素,返回压入的那个元素。
    • 区别:在超出容量时,add()方法会对抛出异常,offer()返回false
  • 弹出元素(删除):remove()、poll()

    • 相同:容量大于0的时候,删除并返回队头被删除的那个元素。
    • 区别:在容量为0的时候,remove()会抛出异常,poll()返回false
  • 获取队头元素(不删除):element()、peek()

    • 相同:容量大于0的时候,都返回队头元素。但是不删除。
    • 区别:容量为0的时候,element()会抛出异常,peek()返回null。

每一个队列的实现必须指定其顺序属性(按先后顺序排;按递增(自然)顺序排)

并发情况

然而Queue接口并未定义阻塞队列的方法

BlockingQueue 定义了那些等待元素出现或者等待队列中有可用空间的方法

补充

1.null值通常不被允许插入,除了在少数实现中
2.Queue实现通常未定义equals和hashCode方法的基于元素的版本,而是从Object类中继承了基于身份的版本

3.1.2 双端队列-Deque

首先Deque 也是一个接口,继承自 Queue

Deque 实现类

  • LinkedList,ArrayDeque,LinkedBlockingDeque

Deque 方法

boolean add(E e);在队列尾部添加一个元素 成功返回true 失败抛出异常
boolean offer(E e);在队列尾部添加一个元素 成功返回true 失败返回false
E remove();取出队列的第一个元素,并从队列中移除该元素,成功返回该元素,失败返回false,如果指定元素为空,抛出NullPointerException
E poll();取出队列第一个元素,并从队列中移除该元素,成功返回该元素,失败返回null。
E element();取出队列第一个元素,不移除,成功返回该元素,失败抛出异常
E peek(); 取出队列第一个元素,不移除,成功返回该元素,失败返回null。

Deque的独有方法

void addFirst(E e);在队列头部 添加一个元素,失败抛出异常
void addLast(E e);在队列尾部 添加一个元素,失败抛出异常
boolean offerFirst(E e);在队列头部 添加一个元素,成功返回true ,失败返回false
boolean offerLast(E e);在队列尾部 添加一个元素,成功返回true ,失败返回false
E removeFirst();取出队列的第一个元素,并移除该元素,成功返回该元素,失败抛出异常
E removeLast();取出队列的最后一个元素,并移除该元素,成功返回该元素,失败抛出异常
E pollFirst();取出队列的第一个元素,并移除该元素,成功返回该元素,失败返回null
E pollLast();取出队列的最后一个元素,并移除该元素,成功返回该元素,失败返回null
E getFirst();取出队列的第一个元素,不移除,成功返回该元素,失败抛出异常
E getLast();取出队列的最后一个元素,不移除,成功返回该元素,失败抛出异常
E peekFirst();取出队列的第一个元素,不移除,成功返回该元素,失败返回null
E peekLast();取出队列的最后一个元素,不移除,成功返回该元素,失败返回null
boolean removeFirstOccurrence(Object o);移除双向队列中第一个出现的该元素,成功返回true,失败抛出异常
boolean removeLastOccurrence(Object o);移除双向队列中最后一个出现的该元素,成功返回true,失败抛出异常
void push(E e);在双向队列头部 添加一个元素 ,失败抛出异常
E pop();取出队列的第一个元素,并移除该元素,队列为空时 抛出NoSuchElementException
boolean contains(Object o);判断队列中是否包含指定元素,包含返回true 否则返回false

4.字符串 API

4.1 StringBudiler & StringBuffer & String

5.树 和 相关API

6.图 和 相关API

正则表达式

Java 8

Java 11

Java 17

Java 21

Spring 常用接口

Model

1.数据校验

2.数据拉取

3.数据存储

开发常用接口

Leetcode中最常用的Java API——util包 在刷力扣的时候是核心代码模式,笔试的时候很可能是ACM模式,需要自己完成导包、定义和自行设计输出,所以一些常用的类和方法需要先导入相应的API包,`java.util`就是最常用到的包,因为它包含集合这个大框架,常见的java数据结构都离不开它,本文大致描述一下这个的基本结构和常用方法~ 阅读详情

相关推荐

java 常用API 接口 总结

首先必须是接口、其次接口中有且仅有一个抽象方法的形式。通常我们会在接口上加上一个@Functionallnterface注解,标记该接口必须是满足函数式接口。");// } // };// go(s1);");");// };");});");");} } @FunctionalInterface // 一旦加上这个注解,那么必须是函数接口,里面只能有一个 抽象方法 interface Swimming {}

weixin_46969441的博客 1522

解决 python2.7中 ImportError: No module named Crypto.Signature

我的解决办法,先查看有没有安装 pip,直接执行pip 回车 没有出现null什么的就安装了,如果没有安装去其他博客哪里看一下,正常情况是默认就有的,然后使用。发现我自己也不会啊,就百度看看,想着网上的解决方法一大片,但是都是废话,能用的没有几个,而且能安装的没有几个。这个里面的python2、3就是系统里面的python版本,直接跟我这样就可以了除非版本不一样,也就是没有这个版本。就可以使用了,第一个应该是卸载之前的,然后重新安装,我的就是这样解决的。就比如我的,我现在使用的 python2.7。

记录一下 1610

JAVA数据结构、集合操作及常用API_C++开发转JAVA

日常JAVA开发过程中需要用到的JAVA数据结构基础概念。进阶集合框架、collection操作、常用API。JAVA Gson等常用转化技巧

少年初心的博客 988

如何利用Arcgis进行地统计学分析(三):空间插值方法选择与优化

本文深入探讨了在Arcgis中进行地统计学分析时,如何根据探索性数据分析(EDA)结果科学选择与优化空间插值方法。文章对比了IDW、RBF、克里金等主流方法的适用场景与核心参数,并通过实战案例详解了从数据诊断到模型调优的完整流程,强调结合半变异函数与趋势分析进行“对症下药”,以提升插值结果的精度与可靠性。

weixin_29281915的博客 121

AI智能体Codex实战:外贸客户开发自动化,85家精准客户深度分析

如果你在外贸行业,特别是工业品领域,一定遇到过这样的困境:想开发海外客户,但不知道从何下手。Google搜索出来的要么是B2B平台上的老面孔,要么是信息残缺的过时黄页。手动筛选、整理、验证,一个客户信息就要花上半小时,效率低得让人抓狂。 更头疼的是,好不容易找到一些公司名称,却不知道他们的采购决策人是谁、公司规模如何、业务是否匹配。传统的客户开发就像大海捞针,投入大量时间成本,回报却充满不确定性。 今天要介绍的这个工具,可能会彻底改变你的工作流。它不是另一个CRM软件,而是一个基于AI的智能客户开发与情报分

weixin_29054399的博客 348

Java中常用数据结构实现及其常用API

介绍总结Java中常用数据结构(数组、链表、哈希表、字符串、队列、栈)的实现方法及其常用API

Shoulen的博客 1738

Gem5模拟器,详解官网教程Event-driven programming(五)

Gem5模拟器,详解官网教程Event-driven programming、时间调度、如何自定义SimObject

qq_46675545的博客 2040

Java 数据结构常用API

#数组 int[] nums = new int[26]; int length = nums.length; *静态注册: int[] nums = new int[]{ 1, 2, 3, 4, 5};//可在注册时同时赋值 *克隆数组: int[] another = nums.clone(); *数组统一赋值 Arrays.fill(nums, 0);//将数组各个元素的值都赋为0 *数组排序API: Arrays.sort(nums);//针对nums做整体排序,默认是升序排序 Arrays.sor

u013914309的博客 1198

Ceres&OpenCV 单目相机标定(论文复现)

Ceres&OpenCV 单目相机标定(论文复现)

dayuhaitang1的博客 371

Python爬虫实战:利用Requests-HTML与异步技术高效爬取B站视频信息及弹幕数据分析

B站的弹幕,远非简单的评论功能,它是一种独特的、实时互动的社交方式,是观众情感的集体宣泄和共鸣。无论是用于内容创作者优化视频结构,还是用于社会学、传播学的研究,亦或是简单的个人兴趣分析,都具备极高的价值。stop_words = {'的', '了', '是', '我', '你', '他', '她', '它', '在', '有', '不', '吗', '吧', '啊', '这', '那'}本文不仅是代码的堆砌,更注重原理的剖析、反爬策略的应对以及工程化的思考,旨在为读者提供一份紧跟技术前沿的实战指南。

2201_76125261的博客 390

数据结构与常用API

Java是一个面向对象的编程语言,但是Java中的八种基本数据类型却是不面向对象的,为了使用方便和解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八种基本数据类型对应的类统称为包装类(Wrapper Class),包装类均位于java.lang包。substring(int beginIndex, int endIndex):返回[beginIndex, endIndex)中的子串。包装类相较于普通的数据类型,它可以存在一些可以直接使用的方法,方便进行数据处理。

guichen0203的博客 394

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java 中常见的数据结构及其常用 API

本文总结了 Java 中常见的数据结构及其常用 API,帮助开发者在写算法时能够快速选择合适的数据结构和操作。通过使用合适的 API,可以有效减少计算复杂度,并提高代码的执行效率。

00后诚续缘 1476

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java 中常用的数据结构类 API

不同场景的数据结构API

qq_52160611的博客 945

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

JAVA常用的数据结构API

1. 栈 后进先出的栈结构: public static void main(String[] arg){ //栈API的使用简介 Stack<Integer> anss=new Stack<>();//泛型声明方法 //添加元素部分 anss.add(3); //add和push实现功能类似...

qq_16215221的博客 892

数据结构与算法——Java常用api

1. 栈Stack Stack<Character> stack=new Stack<Character>(); stack.push('c');//入栈 char c=stack.peek();//查看栈顶元素 stack.pop();//出栈 class Stack<E> extends Vector<E> {} 2. Set Set<Integer> set=new HashSet<>(); boolean flag=set.

weixin_38938338的博客 507

JAVA常用数据结构API

Quene 转载于:https://www.cnblogs.com/rrttp/p/8638280.html

LZW760907的博客 353

LeetCode 刷题【Java常用API与数据结构总结】(持续更新……)

在使用Java刷题中对相关基础知识及用法的回顾和补充。

qq_51395785的博客 3032

【蓝桥杯】Java组必备API类 --常用数据结构及自定义排序

Java数据结构 Java一共有 种数据结构时我们常用的,分别是以下几种 集合类型 描述 ArrayList 可以动态增长和缩减的序列,类似于C++的vector LinkedList 可以在任何位置高效插入和删除的有序序列,链表 ArrayDeque 实现为循环数组的一个双端队列 HashSet 没有重复元素的无序集合 TreeSet 没有重复元素的有序集合 LinkedHashSet 记住元素插入次序的集合 PriorityQueue 优先队列 HashMa.

qq_48596586的博客 1854

java 数据结构(三):java常用类 三 日期时间API

JDK 8之前日期时间API 1.获取系统当前时间:System类中的currentTimeMillis() long time = System.currentTimeMillis(); //返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。 //称为时间戳 System.out.println(time); 2. java.util.Date类与java.sql.Date类 /* java.util.Date类 |---java.sql.Da

创业项目 567

【JAVA】Java基础—面向对象编程:常用API与数据结构—常用工具类(Collections、Arrays等)

Java的。

thinking_chou的专栏 693

Java进阶-常用API

集合和数组都是容器。数组的特点数组定义完成并启动后,类型确定、长度固定。适合元素的个数和类型确定的业务场景,不适合做需要增删数据操作。集合的特点集合的大小不固定,启动后可以动态变化,类型也可以选择不固定。集合更像气球。集合非常适合做元素的增删操作。数组与集合的比较1、数组和集合的元素存储的个数问题。数组定义后类型确定,长度固定集合类型可以不固定,大小是可变的。2、数组和集合存储元素的类型问题。数组可以存储基本类型和引用类型的数据。集合只能存储引用数据类型的数据。

m0_74823595的博客 710

java 队列_Java中常用队列的总结

Java队列总结通过前面文章的学习,我们对Java中常用队列做了介绍。本文,咱们来对队列做个总结吧。首先,我们介绍了现实生活中的实际场景(排队买票等),来告诉我们为什么需要使用队列。队列是一种先进先出(FIFO)的抽象数据结构,在Java中,队列使用了两种数据类型来实现的,分别是:数组和链表这两种数据结构。本文主要内容:回顾Java中常用的七个阻塞队列进行总结及阻塞队列中四组AP并进行总结。...

weixin_39902545的博客 119

数据结构与算法 有哪些? 在java的API中对应着哪些方法

/ 路径压缩 } return parent[x];if (rootX!

慧香一格的专栏 1262

java基础2-常用API

转义字符 改变后面那个字符原本的含义System.out.println("以下正则匹配只能校验单个字符");//.表示任意一个字符System.out.println("你".matches(".."));//falseSystem.out.println("你".matches("."));//trueSystem.out.println("你a".matches(".."));//true// \\d只能是任意的一位数字//简单来记:两个\表示一个\//false。

YY不吃烤鸭的博客 966
上一篇: 力扣日记(1)
下一篇: 力扣日记(2)
~Yogi
博客等级 码龄5年 414粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~Yogi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值