java-Array数组常用操作例子(基础必备)
package com.net.xinfang.reflect; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set; import org.apache.commons.lang.ArrayUtils; public class array001 {
/***
* 数组对象学习
*/
public void StrArray() {
String[] str = new String[] { "我", "是", "数组" };
// String[] str={ "我", "是", "数组" };
System.out.println(str.length);// 输出数组长度
boolean b = Arrays.asList(str).contains("我");// 转换为list再判断是否包含
if (b) {
System.out.println("exist");
}
// for遍历输出数组
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
// foreach遍历输出数组
for (String j : str) {
System.out.println(j);
}
int arr[][] = new int[][] { { 1 }, { 2, 3 }, { 4, 5, 6 } }; // 二维数组
// for循环遍历二维数组。
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]);
}
System.out.println();
}
// foreach语句遍历二维数组。
for (int x[] : arr) { // 外层遍历得到一维数组
for (int e : x) { // 内层遍历得到数组元素
System.out.print(e);
}
System.out.println();
}
// 连接两个数组
int[] arr1 = { 1, 2 };
int[] arr2 = { 3 };
int[] combArr = ArrayUtils.addAll(arr1, arr2);
for (int k : combArr) {
System.out.println(k);
}
// 数组逆向输出
int[] arra = { 1, 2, 3 };
ArrayUtils.reverse(arra);
System.out.println(Arrays.toString(arra));
// int数组转换为String
int[] array3 = { 9, 0 };
String arrStrings = Arrays.toString(array3);
System.out.println(arrStrings);
// 将数组转换ArrayList动态数组
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(str));
Set<String> set = new HashSet<String>(Arrays.asList(str));// 转换为set集合
System.out.println(set);
System.out.println(arrayList);
// 将数组转换为数组
String[] array2 = new String[] { "黄渤", "张艺兴", "孙红雷" };
// 方法 1.
List<String> list = new ArrayList<String>();
for (int i = 0; i < array2.length; i++) {
list.add(array2[i]);
}
System.out.println(list);
String[] arrStrings2 = { "1", "2", "3" };
// 方法 2.
List<String> list2 = java.util.Arrays.asList(arrStrings2);
System.out.println(list2);
// 填充数组
int[] arr3 = new int[2];
Arrays.fill(arr3, 10); // 将数组全部填充10
// 遍历输出
for (int i = 0; i < arr3.length; i++) {
System.out.println(arr3[i]);
}
// 数组排序
int[] arr4 = { 3, 7 };
Arrays.sort(arr4);
for (int i = 0; i < arr4.length; i++) {
System.out.println(arr4[i]);
}
// 比较两个数组
int[] arr9 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
boolean arr10 = Arrays.equals(arr4, arr9);
System.out.println(arr10);
// 数组去重
int[] arr11 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 3, 2, 4, 5, 6, 7, 4, 32, 2, 1, 1, 4, 6, 3 };
// 利用set的特性
Set<Integer> set2 = new HashSet<Integer>();
for (int i = 0; i < arr11.length; i++) {
set2.add(arr11[i]);
}
System.out.println(set2);
int[] arr12 = new int[set2.size()];
int j = 0;
for (Integer i : set2) {
arr12[j++] = i;
}
System.out.println(Arrays.toString(arr12));
// 求数组的最大值和最小值
int max = arr11[0];
for (int i = 1; i < arr11.length; i++) {
if (arr11[i] > max) {
max = arr11[i];
}
}
System.out.println("Max is " + max);
// 计算最小值
int min = arr11[0];
for (int i = 0; i < arr11.length; i++) {
if (arr11[i] < min) {
min = arr11[i];
}
}
System.out.println("Min is " + min);
} // 递归函数字符串反转
public String reverse(String str) {
if ((null == str) || (str.length() <= 1)) {
return str;
}
return new StringBuilder(str).reverse().toString();
} // 倒序输出
public void reversa(String str) {
for (int i = str.length() - 1; i >= 0; i--) {
char c = str.charAt(i);
System.out.println(c);
}
} public String reverse3(String s) {
char[] array = s.toCharArray(); // 将string类型参数转化为char[]类型参数
String reverse = ""; // 注意这是空串,不是null
for (int i = array.length - 1; i >= 0; i--)
reverse += array[i];
return reverse;
} public String reverse2(String s) {
int length = s.length();
String reverse = "";
for (int i = 0; i < length; i++)
reverse = s.charAt(i) + reverse;// 字符串拼接先来排后面
return reverse;
} // 字符转换为数组,二分法
public void reversb(String str) {
char[] strArray = str.toCharArray();// 将字符串转换为数组
int len = strArray.length;
char temp;
for (int i = 0; i < len / 2; i++) { // 从中间向两边对换
temp = strArray[i];
strArray[i] = strArray[len - i - 1];
strArray[len - i - 1] = temp;
}
String strAfter = String.valueOf(strArray);// 数组转换为字符串
System.out.println(strAfter);
} // 选择排序(选择第一个与第二个比较,大的排后面,依次类推)
public void SelectSort(int[] a) {
for (int i = 0; i < a.length - 1; i++) {
for (int j = i + 1; j < a.length; j++) {
if (a[i] > a[j]) {
// 交换两个值
int temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
for (int k : a) {
System.out.print(k);
}
} // 冒泡排序(第1个与第2个比较 )
public void bubblSort(int a[]) {
for (int i = 0; i < a.length - 1; i++) {
for (int j = 0; j < a.length - 1 - i; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j + 1];
a[j + 1] = a[j];
a[j] = temp;
}
}
}
for (int k : a) {
System.out.print(k);
}
} // 遍历判断查找
public int oneByoneSearch(int[] a, int value) {
for (int i = 0; i < a.length; i++) {
if (a[i] == value) {
return i;
}
}
return -1;
} // 二分查找
public int halfSearch2(int[] a, int value) {
int left = 0;
int right = a.length - 1;
int mid;
while (left <= right) {
mid = (left + right) >> 1;
if (a[mid] == value) {
return mid;
} else if (a[mid] > value) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
} public static void main(String args[]) {
array001 ay = new array001();
ay.StrArray();
String a = "abc";
System.out.println(ay.reverse(a));
ay.reversa(a);
ay.reversb(a);
ay.reverse3(a);
int b[] = { 1, 3, 5, 6 };
ay.SelectSort(b);
ay.halfSearch2(b, 3);
ay.bubblSort(b);
ay.oneByoneSearch(b, 5);
// 最简单的方法实现字符串反转
@SuppressWarnings("resource")
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String line = in.nextLine();// next()是遇到空格;nextLine()是遇到回车
StringBuffer sb = new StringBuffer(line);
sb.reverse();
System.out.println(sb.toString());
}
} }
java-Array数组常用操作例子(基础必备)的更多相关文章
- js,jQuery数组常用操作小结
一.js中数组常用操作小结 (1) shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift() ...
- 数组toString()方法,数组常用操作
int[] arr ={1,2,3,4,5}; String arrString = Arrays.toString(arr); //输出[I@7150bd4d System.out.println( ...
- Linux Shell数组常用操作详解
Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...
- Java学习笔记十:Java的数组以及操作数组
Java的数组以及操作数组 一:什么是数组: 数组可以理解为是一个巨大的“盒子”,里面可以按顺序存放多个类型相同的数据,比如可以定义 int 型的数组 scores 存储 4 名学生的成绩 数组中的元 ...
- 快学Scala 第三课 (定长数组,变长数组, 数组循环, 数组转换, 数组常用操作)
定长数组定义: val ar = new Array[Int](10) val arr = Array("aa", "bb") 定长数组赋值: arr(0) = ...
- java基础之数组常用操作
常用的对数组进行的操作 1.求数组中最大值,最小值 思路:假设下标为0的元素是最大值,遍历数组,依次跟max进行比较,如果有元素比这个max还大,则把这个值赋给max.最小值同样 public cla ...
- JavaScript数组常用操作总结
我们在日常开发过程中,使用到原生 JavaScript的时候,有时候会频繁的对数组进行操作,今天我把工作以来,经常用到的有关 JavaScript数组的方法总结一下,方便日后工作的时候查找使用! 一. ...
- Java Array数组 遍历 四种方式(包含 Lambda 表达式遍历)
示例代码如下: package com.miracle.luna.lambda; import java.util.Arrays; /** * @Author Miracle Luna * @Date ...
- Java Array数组使用详解
本文主要讲解java中array数组使用,包含堆.栈内存分配及区别 1.动态初始化 package myArray; /* * 堆:存储的是new出来的东西,实体,对象 * A 每个对象都有地址值 * ...
随机推荐
- HUST 1555 数学作业
参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6394892.html 1555 - A Math Homework 时间限制:1秒 内存限制:12 ...
- pycharm2019+破解补丁
事先声明,由于本人的pycharm已经装好,故部分图片来自网络,转载请注明地址 这篇博文以前是2018版本 后来换电脑重装时发现失效了 索性装的2019版本 具体步骤可以参考下面的删除线,新的补丁和激 ...
- 洛谷P2764 最小路径覆盖问题
有向无环图的最小路径点覆盖 最小路径覆盖就是给定一张DAG,要求用尽量少的不相交的简单路径,覆盖有向无环图的所有顶点. 有定理:顶点数-路径数=被覆盖的边数. 要理解的话可以从两个方向: 假设DAG已 ...
- 【XSY2786】Mythological VI 数学
题目描述 有\(1\sim n\)一共\(n\)个数.保证\(n\)为偶数. 你要把这\(2n\)个数两两配对,一共配成\(n\)对.每一对的权值是他们两个数的和. 你想要知道这\(n\)对里最大的权 ...
- MT【274】一道漂亮的不等式题
已知$x_1^2+x_2^2+\cdots+x_6^2=6,x_1+x_2+\cdots+x_6=0,$证明:$x_1x_2\cdots x_6\le\dfrac{1}{2}$ 解答:显然只需考虑2个 ...
- 【CF865D】Buy Low Sell High(贪心)
[CF865D]Buy Low Sell High(贪心) 题面 洛谷 CF 题解 首先有一个\(O(n^2)\)的\(dp\)很显然,设\(f[i][j]\)表示前\(i\)天手中还有\(j\)股股 ...
- pytest_01_安装和入门
目录 pytest 安装与入门 1.pip install -U pytest 2.创建一个test01.py的文件 3.在该目录下执行pytest(venv) 4.执行多个,新建一个py文件 tes ...
- luogu3621 城池攻占 (倍增)
好像所有人都写的左偏树 但我不会啊233 首先发现乘的时候 系数不会为负,所以能得到一个关键条件:变化后的战斗力随变化前的战斗力大小单调 所以我们考虑倍增 设hp[x][i]是从x开始一路攻克$2^i ...
- [NOI2016]优秀的拆分&&BZOJ2119股市的预测
[NOI2016]优秀的拆分 https://www.lydsy.com/JudgeOnline/problem.php?id=4650 题解 如果我们能够统计出一个数组a,一个数组b,a[i]表示以 ...
- debugger
今天爬取cfda时遇到的困难,一旦开启了调试,就debugger pause, ???还有这种操作 一顿google,百度,解决了这个问题,点一下Deactivate breakPoints,然后点一 ...