Java数据结构与算法之Array数组
2017-12-22 15:14
323 查看
目录:
1.数据概述
2.java数组的初始化
3.java数组API
4.数组排序
5.字符串转数组
6.数组封装后的使用
(2)声明初始化同时进行
(2)常用方法
各类算法,比如:冒泡排序,选择排序,插入排序,归并排序等等。
(2)字符串转int[]
优化查找(二分查找)
1.数据概述
2.java数组的初始化
3.java数组API
4.数组排序
5.字符串转数组
6.数组封装后的使用
1. 数据概述
数组是重要的数据结构之一,以线性结构来存储固定数量大小,数据类型相同的数据2. java数组的初始化
(1)声明和初始化分开public static void main(String[] args) { //(1)声明和初始化分开 //申明 数组 int a []; //申请空间 a = new int[5]; //根据下标赋值 //默认值为0 a[1] = 2; for (int i : a) { System.out.println(i); } }
(2)声明初始化同时进行
public static void main(String[] args) { //(2)声明初始化同时进行 int a [] = new int[]{1,2,3,4}; for (int i : a) { System.out.println(i); } }
3. java数组API
(1)java中数组类Arrays的继承关系java.lang.Object java.util.Arrays
(2)常用方法
asList(T... a) //将输入的参数转换成List类型的数据 binarySearch(Object[] a, Object key)//通过二分查找方法,在指定的数组中查找指定的元素,并返回下标 copyOf(Object[] original, int newLength) //将数组复制到另外一个数组中 copyOfRange(Object[] original, int from, int to) //将给定数组的给定区间元素复制到新数组中 equals(Object[] a, Object[] a2) //判断两个数组是否相等,也就是长度和元素值是否一致 deepEquals(Object[] a1, Object[] a2) //常用来比较多维数组 fill(Object[] a, Object val) //将指定的基本数据类型值分配到指定基本类型数组的每一项 fill(Object[] a, int fromIndex, int toIndex, Object val) //指定分配到指定的区间 sort(Object[] a)//增序排列 sort(Object[] a, int fromIndex, int toIndex) //指定需要排序的数组区间 toString(Object[] a) //转换成字符串类型
4. 数组排序
java中对数组的排序有两种方法,第一种是直接使用API中的sort(Object[] a)方法进行排序或者采用算法中的各类算法,比如:冒泡排序,选择排序,插入排序,归并排序等等。
5. 字符串转数组
(1)字符串转char[]str="hello"; char [] charArray = str.toCharArray();
(2)字符串转int[]
public static void StringToArray(String str){ char[] ch; int [] i; int len; //string长度 len = str.trim().length(); //初始化int数组 i=new int[len]; //通过charAt()取得单个字符转换成String类型再通过parseInt()转换成int类型 for (int j = 0; j < len; j++) { i[j] =Integer.parseInt(String.valueOf(str.charAt(j))); } //int数组输出 System.out.println("int数组输出:"); for (int j = 0; j < i.length; j++) { System.out.print(i[j]+"\t"); } }
6. 数组封装后的使用
public class UseArray { private int[] array; private int number = 0; public UseArray(int max){ array = new int[max]; } public void insert(int value){ array[number] = value; number++; } public int find(int value){ for (int i= 0; i < number; i++) { if(array[i]==value) return i; } return number; } public boolean delete(int value){ int index = find(value); if(index != number){ for (int i = index; i < number-1; i++) { array[i] = array[i+1]; } number--; return true; } return false; } public void display(){ for (int i = 0; i < number; i++) { System.out.printf(array[i]+" "); } } public static void main(String[] args) { UseArray ua = new UseArray(5); ua.insert(1); ua.insert(2); ua.insert(6); ua.insert(7); ua.insert(3); ua.display(); if(ua.find(5) != ua.number){ System.out.println("find,the number index is "+ua.find(5)); }else{ bc17 System.out.println("not found!"); } if(ua.delete(5)!=true){ System.out.println("can not delete!"); } ua.display(); } }
优化查找(二分查找)
private static int find(int[] array, int value) { int start = 0; int end = array.length-1; while(start <= end){ int mid = (end + start) / 2; int midValue = array[mid]; if (midValue < value) start = mid + 1 ; else if (midValue > value) end = mid -1; else return mid; } return -1; }
相关文章推荐
- 【LeetCode-面试算法经典-Java实现】【081-Search in Rotated Sorted Array II(搜索旋转的排序数组)】
- Android JNI JByteArray传递byte数组到Java
- Java System.arraycopy 针对同一数组和两个数组
- 【java performance】使用'System.arraycopy ()'代替通过来循环复制数组
- Java IO深入理解字节和字符数组(ByteArrayInputStream、ByteArrayOutputStream、CharArrayReader、CharArrayWriter)
- Java数据结构与算法之有序数组的插入和合并
- 面试_java:数组:旋转数组:rotate array(189)
- java collection与数组(Array)互转
- 2017/12/30Java基础学习——复制数组のSystem.arraycopy()方法讲解
- 【LeetCode-面试算法经典-Java实现】【189-Rotate Array(旋转数组)】
- java中 set,list,array(集合与数组)相互转换
- 【java day4】 数组 Array,最大/小值,进制转换
- 【Array、List】Java数组或集合中如何删除元素
- Java 数组Array 转换为 List
- [原创]Java中字符串、数组、集合及JSONArray的长度属性
- Java反射04 : 通过Array动态创建和访问Java数组
- java使用array.copy复制数组
- Java中 set,list,array(集合与数组)、Map相互转换
- Java基础:数组Array转成List的几种方法
- Java之数组array和集合list、set、map