• 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());
    		}
    	}
    
    }

  • 相关阅读:
    软件测试-三角形问题
    软件测试经典问题——佣金问题
    Ubuntu下ssh免password登录安装
    elasticsearch的javaAPI之query
    非递归实现树的遍历
    递归输出字符串 经典中的经典
    对二维数据进行边界拓展
    【Bootstrap3.0建站笔记一】表单元素排版
    java模拟实现生产者---消费者问题
    Codeforces Round #271 (Div. 2)
  • 原文地址:https://www.cnblogs.com/xinfang520/p/7684623.html
Copyright © 2020-2023  润新知