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. Codeforces715 B. Complete The Graph

    传送门:>Here< 题意:给出一张带权无向图,其中有一些边权为0.要求将边权为0的边的边权重置为一个任意的正整数,使得从S到T的最短路为L.判断是否存在这种方案,如果存在输出任意一种 解 ...

  2. 【XSY2751】Mythological IV 线性插值

    题目描述 已知\(f(x)\)为\(k\)次多项式. 给你\(f(0),f(1),\ldots,f(k)\),求 \[ \sum_{i=1}^nf(i)q^i \] \(k\leq 500000,n\ ...

  3. 2018阿里云短信发送DEMO接入简单实例

    以下更新2018-04-2309:57:54 后续不再更新, 基本类: app/SignatureHelper.php <?php namespace aliyun_mns; /** * 签名助 ...

  4. 允许外网访问MySQL

    1:设置mysql的配置文件     /etc/mysql/my.cnf     找到 bind-address  =127.0.0.1  将其注释掉://作用是使得不再只允许本地访问:  重启mys ...

  5. edit 控件之隐藏光标

    @2019-02-22 [小记] 禁止聚焦功能便可实现

  6. table用模板生成的问题

    在使用<template></template>存放HTML模板标记时,发现一个烦人的问题,表格不行. <template> <table> <t ...

  7. luogu5010 HMR的LIS III (dp+线段树)

    这个东西和最长上升子序列很像 考虑如果已经知道每个位置为开头的LIS长度和个数 f[i],我可以扫一遍 判断这个个数和K的大小,找到第一个长度=len而且个数<K的,这个位置就是要选的 然后K- ...

  8. jsp (1)

    一.jsp介绍: jsp是servlet的一种包装.是html+js+css+servlet. jsp文件无需配置,如果修改了jsp文件不需要reload应用. jsp访问方法:直接访问文件名.jsp ...

  9. C# winfrom容器布局与工具栏&&右键菜单栏&&隐藏显示小图标的的简单事件

    前两天的时候学习了winfrom,简单地说就是各种布局,然后给按钮,textbox等各种控件添加各种事件的操作,经过前天一晚上,昨天一天的练习操作的还算熟练,但是对构造函数传值还是不是很了解,由于各种 ...

  10. PHP原生处理select结果集的函数介绍

    select: mysql_num_rows($result) 从结果集中获取数据记录的个数 mysql_num_fields($result) 从结果集中获取数据记录列的个数 mysql_fetch ...