目录
1.声明和打印数组
import java.util.Arrays;
public class 数组 {
public static void main(String[] args){
// int[] one = new int[] {1,2,3};
int[] one = {1,2,3};
// int[] one = new int[3];
// for(int i = 0; i<one.length; i++) {
// one[i] = i;
// }
//输出数组,只是地址
System.out.println(one);
//输出数组,换行
for(int element:one){
System.out.println(element);
}
//输出数组,不换行
for(int element:one){
System.out.print(element);
}
System.out.print("\n");
//输出数组对应的字符换
String one_s = Arrays.toString(one);
System.out.println(one_s);
// int[][] two = new int[][] {{4,5,6},{7,8,9}};
// int[][] two = {{4,5,6},{7,8,9}};
int[][] two = new int[2][3];
for(int i = 0; i<two.length; i++) {
for(int j = 0; j<two[0].length; j++) {
if(i == 0){
two[i][j] = i+j+4;
}
else{
two[i][j] = i+j+6;
}
}
}
//输出数组,只是地址
System.out.println(one);
//输出数组,换行
for(int[] element:two){
for(int element1: element) {
System.out.println(element1);
}
}
//输出数组,不换行
for(int[] element:two){
for(int element1: element) {
System.out.print(element1);
}
}
System.out.print("\n");
//输出数组对应的字符换
String two_s = Arrays.toString(two);
System.out.println(two_s);//[[I@7c75222b, [I@4c203ea1]
String two_s0 = Arrays.toString(two[0]);
String two_s1 = Arrays.toString(two[0]);
System.out.println(two_s0);//[4, 5, 6]
System.out.println(two_s0+two_s1);//[4, 5, 6][4, 5, 6]
String[] bArray = {"a","b","c", "d", "e"};
String[] cArray = new String[]{"a","b","c","d","e"};
String[] aArray = new String[5];
for(int i = 0; i < aArray.length; i++){
aArray[i] = bArray[i];
}
//输出数组,不换行
for(String element:aArray){
System.out.print(element);//abcde
}
System.out.print("\n");
}
}
2.将数组转化为集合
String[] stringArray = { "a", "b", "c", "d", "e" };
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(stringArray));
System.out.println(arrayList); // [a, b, c, d, e]
Set<String> set = new HashSet<String>(Arrays.asList(stringArray));
System.out.println(set); //[d, e, b, c, a]
3.检查数组是否包含某一个值、对应的索引
String[] stringArray = { "a", "b", "c", "d", "e" };
boolean b = Arrays.asList(stringArray).contains("a");
System.out.println(b);// true
public static void main(String[] args){
int[] a= {1,2,3};
int x;
x= Arrays.binarySearch(a, 2);
System.out.println("数组a为:");
System.out.println(Arrays.toString(a));
System.out.println("数字x在数组中的索引(下标)为:"+x);//数字x在数组中的索引(下标)为:1
}
4.常用数组拷贝
//直接赋值
String[] a1 = {"a1", "a2"};
String[] a2 = a1;
a1[0] = "b1"; //更改a1数组中元素的值
System.out.println(Arrays.toString(a1)); //[b1, a2]
System.out.println(Arrays.toString(a2)); //[b1, a2]
//克隆 相比 new 更有效率。根据已知的对象,做克隆。
String[] a1 = {"a1", "a2"};
String[] a2 = a1.clone();
a1[0] = "b1"; //更改a1数组中元素的值
System.out.println(Arrays.toString(a1)); //[b1, a2]
System.out.println(Arrays.toString(a2)); //[a1, a2]
//系统级别的native原生方法,效率高。
//参数含义是:(原数组, 原数组的开始位置, 目标数组, 目标数组的开始位置, 拷贝个数)
int[] a1 = {1, 2, 3, 4, 5};
int[] a2 = new int[10];
System.arraycopy(a1, 1, a2, 3, 3);
System.out.println(Arrays.toString(a1)); // [1, 2, 3, 4, 5]
System.out.println(Arrays.toString(a2)); // [0, 0, 0, 2, 3, 4, 0, 0, 0, 0]
//Arrays.copyOf
//参数含义,(原数组,拷贝的个数)。
int[] a1 = {1, 2, 3, 4, 5};
int[] a2 = Arrays.copyOf(a1, 3);
System.out.println(Arrays.toString(a1)) // [1, 2, 3, 4, 5]
System.out.println(Arrays.toString(a2)) // [1, 2, 3]
//Arrays.copyOfRange
//Arrays.copyOfRange底层其实也是用的 System.arraycopy,只不过封装了一个方法.
//参数含义:(原数组,开始位置,拷贝的个数)。
int[] a1 = {1, 2, 3, 4, 5};
int[] a2 = Arrays.copyOfRange(a1, 0, 1);
System.out.println(Arrays.toString(a1)) // [1, 2, 3, 4, 5]
System.out.println(Arrays.toString(a2)) // [1]
5.数组排序
//public static void sort(doule a[])
//public static void sort(doule a[],int start,int end);
//第一种,将数组按升序全排序
//第二种从索引为start到索引为end-1的位置,升序排序
void test_arrayOfRange()
{
int []a = {55,33,44,22,11};
int []b = Arrays.copyOfRange(a, 1, 4);
Arrays.sort(a, 1, 4);
Arrays.sort(b);
System.out.println("排序后b数组为:");
for(int i:b)
{
System.out.printf("%d ",i);//22 33 44
}
System.out.println("\n排序后a数组为:");
for(int i:a)
{
System.out.printf("%d ",i);//55 22 33 44 11
}
System.out.println();
}
package com.itheimajavase;
import java.util.Arrays;
import java.util.Comparator;
public class Day01 {
public static void main(String[] args) {
Integer[] arr = {4, 6, 3, 9, 1, 5, 8};
Mycomparator c = new Mycomparator(); // 实例化一个Comparator对象
Arrays.sort(arr, c);
for(Integer ele : arr) {
System.out.print(ele +" ");
}
}
// 运行后是从大到小排好序的
}
class Mycomparator implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
if(o1 > o2) // 默认是o1 < o2时返回-1, 一下同理
return -1;
if(o1 < o2)
return 1;
return 0;
}
}
6.