java:编程比赛中有用的方法整理(一)数组

我曾经参加过几次编程比赛,但是当时用的是c语言,现在学习了java,打算专攻java组,故以此整理。

数组无论在哪里都必不可少。

一.数组的拷贝:

使用Arrays类的copyOf方法:

1.将一个数组中的所有值拷贝到另一个里面:

int[] copiedLuckyNumber=Arrays.copyOf(luckyNumbers,luckyNumbers.length);

2.数组的扩容:

luckyNumbers=Arrays.copyOf(luckyNumbers,2*luckyNumbers.length);

如果数组元素是数值型的,那么多余元素将被赋值为0,如果数组元素是布尔型的,则将赋值为false,相反如果长度小于原始数组,只拷贝最前面的数据元素。

有了这方法就不用写个循环就能得到原函数了。

3.数组的截取:

luckyNumbers=Arrays.copyOfRange(luckyNumbers,int start,int end);

截取数组中的一段,start:起始下标(包含这个值)end:(不包含这个值)如果end超过数组的size多余的位置为0或者false

4.数组的初始化

一般来说数组的初始化可以入下边代码一样

int[] arr = new int[10];
for(int i = 0;i < arr.lenght;i++){
    arr[i] = i;//这里的i代表你需要的值
}

这是一种初始化的方法

还有这种:

int[] arr = {1,2,3,4,5,6};

这样也可以对数组进行初始化

 

二.数组排序:

最重要的是数组里面的排序(终于可以不用写快速排序了)

Arrays.sort(yourArrays);

这个sort方法使用了优化的快速排序,效率比较高。

排序后数组中的值会按照从小到大。

后期补充(2019年9月25修改):

 本方法不返回数组,仅是对yourArrays数组进行修改。

三.数组的查找

数组中自带了二分搜索的方法

static int binarySearch(type[] a,type v);
static int binarySearch(type[] a,int start,int end,type v);

参数:a 类型为基本类型

   start:起始下标(包含这个值)

   end:(不包含这个值)

   v 同a的数据元素类型相同的值

后期补充(2019年9月25修改):

          首先补充的这个方式是本方法返回的值有几类

           1.找到值就直接返回当前值在数组中的下标

           2.找不到而且比所有元素小就返回-1

           3.找不到而且比所有元素大就返回搜索数组的长度加1

           4.找不到在本数组中就返回插入在数组中的位置的下标但是要加-1

           例子:

          

          注意:

          首先使用本方法需要将数组先进行排序,不然计算结果肯定是错误的,以及数组中只能有一个带查找的值,如果有多个那样的话,返回哪一个是不确定的。

           

 四.不规则数组(略微不那么重要)

 比如:

1

1  1

1  2  1

1  3  3  1

1  4  6  4  1

1  5  10  10  5  1

先分配行:

int[][] odds=new int[MAX+1][]

分配这些行:

for(int n=0;n<MAX;n++)

  odds[n]=new int[n+1];

五.数组的转换

1.int型数组转为字符串,其他类型的数组转为字符串也可以用这个

1 int[] arr = new int[]{1,2,3}; 
2 String s = Arrays.toString(arr);

后期补充(2019年9月25修改):

2.将数组转为集合类

集合类作为一个必须要掌握的东西,当然它的转换是必须要了解的

我目前懂得有两种方式:

(1)将结点链表先转化为Object对象数组,然后循环再将Object对象数组转换成相应的数组

	        
            LinkedList<Integer> res =new LinkedList<Integer>();
            int[] res1 =new int[res.size()];
	    	Object[] t = res.toArray();
	    	for(int i =0;i<res.size();i++) {
	    		res1[i] = (int) t[i];
	    	}

(2)直接从链表中使用循环get()方法,然后对数组赋值(这种方法和上面这一种很像,就不再介绍了)

补充:还有一种方法,使用java8的新方法Stream(),暂时未掌握。而且我查询博客,发现没有直接返回相应数组的(除了java8的这种新方法)

六.基本数组的初始值:

创建一个数组,如果不填充数值,它也是会有初始值的

例如:

int 型数组的初始值为0

boolean类型的数组初始值为false

float型的数组初始值为0.0

但是包装类的初始值和基本类型不一样一般都是NULL

至于包装类是什么,就我理解是一种包装了基本类型的对象,里面有很多方法,例如类型转换的

java:比赛中常用方法整理——字符串(基础)

关于竞赛中位运算的用法

 整理自:核心技术卷一

 整理自:互联网上多篇博客

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值