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数组常用操作例子(基础必备)的更多相关文章

  1. js,jQuery数组常用操作小结

    一.js中数组常用操作小结 (1) shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift() ...

  2. 数组toString()方法,数组常用操作

    int[] arr ={1,2,3,4,5}; String arrString = Arrays.toString(arr); //输出[I@7150bd4d System.out.println( ...

  3. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

  4. Java学习笔记十:Java的数组以及操作数组

    Java的数组以及操作数组 一:什么是数组: 数组可以理解为是一个巨大的“盒子”,里面可以按顺序存放多个类型相同的数据,比如可以定义 int 型的数组 scores 存储 4 名学生的成绩 数组中的元 ...

  5. 快学Scala 第三课 (定长数组,变长数组, 数组循环, 数组转换, 数组常用操作)

    定长数组定义: val ar = new Array[Int](10) val arr = Array("aa", "bb") 定长数组赋值: arr(0) = ...

  6. java基础之数组常用操作

    常用的对数组进行的操作 1.求数组中最大值,最小值 思路:假设下标为0的元素是最大值,遍历数组,依次跟max进行比较,如果有元素比这个max还大,则把这个值赋给max.最小值同样 public cla ...

  7. JavaScript数组常用操作总结

    我们在日常开发过程中,使用到原生 JavaScript的时候,有时候会频繁的对数组进行操作,今天我把工作以来,经常用到的有关 JavaScript数组的方法总结一下,方便日后工作的时候查找使用! 一. ...

  8. Java Array数组 遍历 四种方式(包含 Lambda 表达式遍历)

    示例代码如下: package com.miracle.luna.lambda; import java.util.Arrays; /** * @Author Miracle Luna * @Date ...

  9. Java Array数组使用详解

    本文主要讲解java中array数组使用,包含堆.栈内存分配及区别 1.动态初始化 package myArray; /* * 堆:存储的是new出来的东西,实体,对象 * A 每个对象都有地址值 * ...

随机推荐

  1. 用递归方法计算斐波那契数列(Recursion Fibonacci Sequence Python)

    先科普一下什么叫斐波那契数列,以下内容摘自百度百科: 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因意大利数学家列昂纳多·斐波那契(Leonardoda Fibonacci ...

  2. linux环境node服务器配置流程

    一. 安装node Node 官网已经把 linux 下载版本更改为已编译好的版本了,我们可以直接下载解压后使用: # wget https://nodejs.org/dist/v10.9.0/nod ...

  3. 【arc073f】Many Moves(动态规划,线段树)

    [arc073f]Many Moves(动态规划,线段树) 题面 atcoder 洛谷 题解 设\(f[i][j]\)表示第一个棋子在\(i\),第二个棋子在\(j\)的最小移动代价. 发现在一次移动 ...

  4. stm32使用rt-thread在文件《stm32f1xx_hal.h》中头文件包含顺序引出的错误

    @2019-01-24 [小记] 在学习 rt-thread BSP制作过程中,发现文件<stm32f1xx_hal.h>中 Env工具生成的原始顺序 1. #include " ...

  5. [HAOI2015]按位或(容斥+前缀和)

    题目描述 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行或(c++,c的|,pascal 的or)操作.选择数字i的概率是p[i].保证0<=p[i] ...

  6. NOIP2012疫情控制(二分答案+树上贪心)

    H 国有n个城市,这 n个城市用n-1条双向道路相互连通构成一棵树,1号城市是首都,也是树中的根节点. H国的首都爆发了一种危害性极高的传染病.当局为了控制疫情,不让疫情扩散到边境城市(叶子节点所表示 ...

  7. centos7下利用httpd2.4配置svn并使用Ldap用户认证

    应用场景:Windows下有AD活动目录,类Unix系统下有Ldap,在运维开发工具平台逐步丰富的现在,统一用户管理大大便捷了管理人员. 其中不乏经典版本控制管理工具svn,与Ldap组合的用户认证方 ...

  8. Linux记录

    多语言环境镜像使用手册 vi和vim上查找字符串 vim 的安装及配置 Linux下的tar压缩解压缩命令详解 vim配置之——ctags与TagList的配置以及NERDTree && ...

  9. HDU3032 Nim or not Nim?

    解:使用sg函数打表发现规律,然后暴力异或起来即可. #include <bits/stdc++.h> typedef long long LL; ; int a[N]; inline L ...

  10. Flask 键盘事件

    <div class="container" style="margin-top: 300px; "> <div class="ro ...