java学习笔记6

1,找出最大元素的最小下标值

double max = myList[0];
int indexofMax = 0;
for (int i=0;i<myList.length;i++){
	if(myList[i] > max){
	  max = myList[i];
	  indexofMax = i;
	  }
}

用一次循环就找到了最大值,每次循环都将得到的较大数,在下一次循环中与新加入的数比较,在循环结束后就可以得到最大数。

2,foreach循环
不使用下标变量就可以顺序地遍历整个数组,
例如

for (double e: myList){
	System.out.println(e);
	}

3,复制数组

list1 = list2;

该语句不能将list2的内容复制给list1,而只是将引用值复制给了list1。list1原先所使用的数组不能再引用,就变成了垃圾会被java虚拟机自动回收。

复制方法:
1,使用循环语句逐个复制数组的元素
2,使用System类中的静态方法arraycopy。

int[] a = {1,2,3,4,5,6,7,8};
			int[] b = {8,7,6,5,4,3,2,1};
			for (int time = 0; time < 8;time++) {
				 System.out.println(a[time]+" "+b[time]);
			}
			System.arraycopy(a, 0, b, 0, 8);
			/*方法内五个参数从左到右分别表示原数组对象,原数组起始copy位置,
			目标数组对象,目标数组起始copy位置,复制的元素个数*/
			for (int times = 0; times < 8;times++) {
				 System.out.println(a[times]+" "+b[times]);
			}

3,使用clone方法复制数组

4,基本数据类型都是值传递,而数组传递的是引用在这里插入图片描述
因此,如果改变方法中的数组将会看到方法外的数组也改变了。

public class TestArrayArguments {
	public static void main(String[] args){
	int x = 1;
	int[] y = new int[10];
	m(x,y);
	System.out.println("x is " +x);
	System.out.println("y[0] is " +y[0]);
}
public static void m(int x, int[] y){
x = 1001;
y[0] = 5555;	
}

在这里插入图片描述

5,数组的查找方法

1,线性查找法
即将要查找的关键字key与数组中的元素逐个进行比较。
由于线性查找法的执行时间随着数组元素个数的增长而线性增长,所以对于大数组而言,线性查找法的效率并不高。
2,二分查找法
二分查找法使用前提条件是数组中的元素必须已经排好序了。假设数组已按升序排列。二分查找法首先将关键字与数组中间元素进行比较。关键字小于中间元素,只需在前半部分查找,相等则匹配成功查找结束,大于则只需在后半部分查找。

实现代码如下,list已排好了序
public class BinarySearch {
	public static int binarySearch(int[] list, int key){
	int low = 0;
	int high = list.length - 1;
	while (high >= low){
	int mid = (low + high )/2;
	if(key < list[mid]){
	high = mid - 1;
	}
	else if (key == list[mid]){
	return mid;
	}
	else
	low = mid + 1;
	}
	return -low - 1;
	}
	}

六,排序方法
1,选择排序法
即先找到数列中最小的数,然后将它和第一个元素交换,接下来在剩下的数中找到最小数,以此类推,知道数列中仅剩一个数

public static void selectionSort(double[] list){
for (int i = 0;i < list.length - 1;i++){
	for (int j = i + 1;j < list.length;j++){
	if (list[i] > list[j]){
	double x = list[i];
	list[i] = list[j];
	list[j] = x;
			}
		}
	}
}

2,冒泡排序法
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

public static void selectionSort(double[] list){
for (int i = 0;i < list.length - 1;i++){
	for (int j = 0;j < list.length;j++){
	if (list[j] > list[j+1]){
	double x = list[j];
	list[j] = list[j+1];
	list[j+1] = x;
			}
		}
	}
}

七,Arrays类
包含各种静态方法。用于实现数组的排序和查找,数组的比较和填充数组元素,以及返回数组的字符串表示。
排序:sort或者parrallelSort

java.util.Arrays.sort(list1);//升序
java.util.Arrays.sort(list1,13);//对list1[1]到list1[3-1]部分升序
查找:binarySearch(二分查找法)
 System.out.println(java.util.Arrays.binarySearch(list1 , 11));/*若不存在关键字,方法返回
 -(insertionIndex+1),与之前的二分查找法代码返回值相同*/
比较:equals
 System.out.println(java.util.Arrays.equals(list1 , list2));//输出true或false
填充:fill
java.util.Arrays.fill(list1 , 5);//将5填充到list1中,即将所有元素替换为5
java.util.Arrays.fill(list2 , 1 , 5 , 8);/*将8填充到元素list2[1]到list2[5-1]中,即将1到5-1
的位置上的元素都换为8*/

用字符串的形式返回一个数组中的所有元素:toString
 System.out.println(java.util.Arrays.toString(list));

热门文章

暂无图片
编程学习 ·

Logstash概念与原理

Logstash概念Logstash是一款开源的数据收集引擎,具备实时管道处理能力。简单来说,logstash作为数据源与数据存储分析工具之间的桥梁,结合ElasticSearch以及Kibana,能够极大方便数据的处理与分析。通过200多个插件,logstash可以接受几乎各种各样的数据。包括日志、网络请求…
暂无图片
编程学习 ·

树莓派4B介绍及其系统安装 入门教程(一)

树莓派4B介绍及其系统安装 入门教程(一)树莓派介绍系统下载安装连接外设启动后续计划入门进阶扩展参考资料 树莓派介绍 树莓派介绍可以参考链接: 树莓派介绍。里面介绍的很详细了,这里就不重复讲了,也可以去树莓派官方网站下载它的参数资料,里面也有很多利用树莓派设计制作…
暂无图片
编程学习 ·

java实现的通用遗传算法框架

这两天写了一个比较通用的遗传算法框架common-geneticalgorithm,之所以写这个是因为以前每次需要用到遗传算法的时候总是手写一遍,从开始写代码起到现在估计至少写了不下20次了,像matlab,python,js,go,java的版本都写过。 主要思路是将重复的代码部分,像选择算子,精英保留,…
暂无图片
编程学习 ·

springboot aop 切到service层,不生效

今天发现一个问题,使用aop切到service层方法上,idea会有切成功的标志,编译也不报错,但就是不生效。研究了下发现,是因为我切的方法被同一个service中的其他方法调用,这样的话就不生效了,暂不清楚原因,解决方法时切到调用它的方法上,这只是切点不生效的一种情况,希望能…
暂无图片
编程学习 ·

前端学习笔记 基础 前端技术简介

文章目录前端三剑客HTMLHTML5XHTMLCSSCSS3JavaScriptES6框架jQueryBootstrapReactVue.js 前端三剑客 HTMLHTML(Hyper Text Markup Language)称为超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为…
暂无图片
编程学习 ·

用自行实现的优先队列进行四字成语汉字频率统计

文章目录背景构建最大堆代码实现测试通过最大堆实现优先队列成语汉字频率统计案例统计四字成语文件中的汉字出现频率的前5位项目结构汉字频率的类优先队列测试类成语汉字统计主程序 背景 在《自已做动画及编写程序搞清楚最大堆的实现原理》这篇文章中,我们通过动图分析编 码自…
暂无图片
编程学习 ·

机器视觉打光技巧

光源专家的8个打光技巧 机器视觉系统中的照明系统是极其重要的一部分,它的好坏直接影响着后面的图像处理。在听了一位日本光源专家的讲座之前,我其实对照明并不太了解,不就是将图像照亮以至于相机能够拍到图像吗?但事实并非如此,照明远非增强图像亮度这样简单,好的照明系…
暂无图片
编程学习 ·

Android客户端调起地图定位不准,导航路线出现偏差,目的地坐标偏离

前言 APP调起地图导航出现偏差 是什么问题造成的呢 一:可能是模糊定位造成的 二:也有可能 改变了经纬度的数据 解决思路如下 先了解一下调起高德APP的各个参数是什么 百度地图 参数如下:参数名称 描述 是否必选 格式(示例)origin 起点名称或经纬度,或者可同时提供名称和经纬…
暂无图片
编程学习 ·

[粗读webrtc] SDP

webrtc 1.0 SdpSemantics RTCConfiguration选项:SdpSemantics planb 统一升级 到 Unified Plan 参考 “Unified Plan” 过渡指南 SDP 细节 WebRTC Native 源码导读(十四):API 概览 总体来说,WebRTC 的 SDP 分为几个部分: session metadata: v=, o=, s=, t
暂无图片
编程学习 ·

Portworx Essentials 视频讲解

Portworx Essentials vs. Portworx Enterprise:https://www.iqiyi.com/v_19rzfuk1yw.html欢迎回到Portworx讲解视频系列,我是Ryan Warner。今天我们来介绍一下Portworx Essentials版本,以及与Portworx Enterprise版本的区别。Portworx Essentials是在K8S上运行数据管理的最必…
暂无图片
编程学习 ·

五篇机器阅读理解论文(Match-LSTM+Ptr,DCN,R-Net,QANet)介绍

以close-domain为例,MRC任务就是给定一篇文章和一些与文章相关的问题,要求模型给出问题的答案 MRC按照问答的形式不同大致可以分成四种任务填空型 多项选择型 片段抽取型 自由答案型首先来看一看数据集 填空型问答 所谓填空型问答是指给定一篇文章和一个缺失某个单词的句子作…
暂无图片
编程学习 ·

记录一下开始搭建springboot+jsp项目遇到的一个问题

记录一下开始搭建springboot+jsp项目遇到的一个问题简述自己搭建项目的过程错误及解决总结加补充 最近刚开始学习搭建springboot项目,用到的ide工具是idea,前端用的是jsp 简述自己搭建项目的过程 直接上图在idea中创建一个springboot项目,选择好自己使用的jdk 刚创建好的项目…
暂无图片
编程学习 ·

【Java】--CyclicBarrier的介绍及应用

CyclicBarrier 简介 CyclicBarrier是java.util.concurrent包下的一个类,CyclicBarrier的字面意思是 可循环(Cyclic) 使用的 屏障(Barrier) 。 CyclicBarrier能让一组线程到达一个屏障(也可叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会打开,所有被屏障拦截的线…
暂无图片
编程学习 ·

C语言求两个数的最大公约数

#include<stdio.h> int main () {int i,j,t;scanf("%d %d",&i,&j);int m;if(i>j)//比较两者大小,让i存储两者较小的数; {t=i; //如果I>J,i j 位置互换 i=j;j=t;}for(m=i;m>0;m--)//因为两数的最大公约数必然是比两数最大的数字小,可能小于…
暂无图片
编程学习 ·

linux重要知识清单:进程管理

相关的系统调度fork(): 用于创建进程,Linux中进程的创建者与被创建者是父子关系clone():克隆,真正实现创建进程的操作,fork()是不带参数的,clone()是带参数的,通过不同的参数后,可以不仅仅做fork(),也能做其他的创建进程的方式exec():加载外部存储器的一段代码,把一个可…
暂无图片
编程学习 ·

简单动态字符串

SDS(simple synamic String)用作Redis默认字符串表示。C字符串只会作为字符串字面量用在一些无须对字符串进行修改的地方,例如打印日志等。 SDS定义 每个sds.h/sdshdr结构表示一个SDS值 struct sdshdr {//字符串的长度int len;// buf数组中未使用字节的数量int free;// 字节…
暂无图片
编程学习 ·

6万+鹅厂员工办公必备的软件,最近发布了新版本!

点击观看大咖分享​零信任安全的理念已经在国内外被广泛认可和应用。在当前后疫情时期,远程协同办公已成为企业运营开源节流、提升效率的新模式,保障办公效率协同和安全也成为企业发展的新课题。6月24日,腾讯联合零信任产、学、研、用共15家单位,在中国产业互联网发展联盟标…
暂无图片
编程学习 ·

线性代数知识课笔记1

笔记内容摘自 猴博士爱讲课@B站 https://www.bilibili.com/video/BV1hs411e7X8?p=4行列式 行列式的计算 行列式分为2阶、3阶、4阶……n阶等,其中2阶的计算方法为: ∣1326∣ \begin{vmatrix}1&3\\2&6\end{vmatrix} ∣∣∣∣​12​36​∣∣∣∣​ 计算方法为对角线相乘…