Day03_【数组、ArrayList】

1.数组

1.数组的创建
        int[] arrayA = new int[300];
        int[] arrayA = new int[] {
    
    5,15,25};
        int[] arrayA = {
    
    5,15,25};

        // 创建一个数组,能存放10个double类型的数据
        double[] arrayB = new double[10];
        double[] arrayB = new double[] {
    
    2.0,3.0,5.6};
        double[] arrayB = {
    
    2.0,3.0,5.6};

        // 创建一个数组,能存放5个字符串
        String[] arrayC = new String[5];
        String[] arrayC = new String[] {
    
    'Hello','good','bad'};
        String[] arrayC = {
    
    'Hello','good','bad'};

		//java中没有int a[10]这种语句
2.数组的输出
		int[] array = {
    
     10, 20, 30 };
		
        System.out.println(array); //这样你是看不到数组里的元素的,这样打印出的是数组的内存地址[I@75412c2f

        // 一个一个打印出
        System.out.println(array[0]); // 10
        System.out.println(array[1]); // 20

		//循环打印出
        for (int i = 0; i < array.length; i++) {
    
    
            System.out.println(array[i]);
        }
3.数组的遍历输入
int[] a =new int[10];
Scanner scan =new Scanner(System.in);
for(int i=0;i<10;i++){
    
    
	a[i]=scan.nextInt();
}
4.打印出数组的最大值/最小值
        int[] array = {
    
     5, 15, 30, 20, 10000, 30, 35 };

        int max = array[0];
        for (int i = 1; i < array.length; i++) {
    
    
            if (array[i] > max) {
    
    
                max = array[i];
            }
        }
5.数组的反转
/*
数组元素的反转:
本来的样子:[1, 2, 3, 4]
之后的样子:[4, 3, 2, 1]
 */
        for (int min = 0, max = array.length - 1; min < max; min++, max--) {
    
    
            int temp = array[min];
            array[min] = array[max];
            array[max] = temp;
        }
6.去掉数组中的0

在这里插入图片描述

7.return数组

return只能返回一个值,当我们想要返回多个数值时可以return array

public class Demo02ArrayReturn {
    
    

    public static void main(String[] args) {
    
    
        int[] result = calculate(10, 20, 30);

        System.out.println("总和:" + result[0]);
        System.out.println("平均数:" + result[1]);
    }

    public static int[] calculate(int a, int b, int c) {
    
    
        int sum = a + b + c; // 总和
        int avg = sum / 3; // 平均数
        
        int[] array = new int[2];
        array[0] = sum; // 总和
        array[1] = avg; // 平均数

        int[] array = {
    
     sum, avg };
        return array;
        //return sum,avg可不行!
    }
}
7.传入数组
public class Demo02Method {
    
    

    public static void main(String[] args) {
    
    
        int[] array = {
    
    5, 15, 25, 20, 100};

        int max = getMax(array);
        System.out.println("最大值:" + max);
    }

    // 给我一个数组,我还给你一个最大值
    public static int getMax(int[] array) {
    
    
        int max = array[0];
        for (int i = 1; i < array.length; i++) {
    
    
            if (array[i] > max) {
    
    
                max = array[i];
            }
        }
        return max;
    }

}
8.常用的数组方法
int[] array = {
    
     5, 15, 30, 20, 10000, 30, 35 };

//array.lenth
int length = array.length;//7

//Arrays.toString(array)
System.out.println(Arrays.toString(array));//[5,15,30,20,10000,30,35]
通过查询API可知,你查到了如下信息:

public static String toString(数组):因为是静态方法所以可以使用“类名.方法”的形式(Arrays.toString(数组))调用,返回的类型是一个String类型

public static void sort(数组):
因为是静态方法所以可以使用“类名.方法”的形式(Arrays.sort(数组))调用,返回类型是一个void类型,所以你不能使用String intStr = Arrays.sort({
    
    2, 1, 3, 10, 6});这种的返回形式

事实上,它们的使用方法如下
String NewStr = Arrays.toString({
    
    10, 20, 30});将参数数组变成字符串(按照默认格式:[元素1, 元素2, 元素3...])
Arrays.sort(array1);按照默认升序(从小到大)对数组的元素进行排序。

        int[] intArray = {
    
    10, 20, 30};// 将int[]数组按照默认格式变成字符串
        String intStr = Arrays.toString(intArray);
        System.out.println(intStr); // [10, 20, 30]

        int[] array1 = {
    
    2, 1, 3, 10, 6};
        Arrays.sort(array1);
        System.out.println(Arrays.toString(array1)); // [1, 2, 3, 6, 10]

        String[] array2 = {
    
    "bbb", "aaa", "ccc"};
        Arrays.sort(array2);
        System.out.println(Arrays.toString(array2)); // [aaa, bbb, ccc]

2.ArrayList

1.ArrayList的重点知识

数组的长度不可以发生改变。
但是ArrayList集合的长度是可以随意变化的。

对于ArrayList来说,有一个尖括号<E>代表泛型。
泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。
注意:泛型只能是引用类型,不能是基本类型。

注意事项:
对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。
如果内容是空,得到的是空的中括号:[]
ArrayList当中的常用方法有:

public boolean add(E e):向集合当中添加元素,参数的类型和泛型一致。返回值代表添加是否成功。
备注:对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。
但是对于其他集合(今后学习)来说,add添加动作不一定成功。boolean success = list.add("柳岩");//True

public E get(int index):从集合当中获取元素,参数是索引编号,返回值就是对应位置的元素。String name = list.get(2);// 赵又廷

public E remove(int index):从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。String whoRemoved = list.remove(3);// 李小璐

public int size():获取集合的尺寸长度,返回值是集合中包含的元素个数。int size = list.size();
import java.util.ArrayList;

public class Demo03ArrayListMethod {
    
    

    public static void main(String[] args) {
    
    
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list); // []

        // 向集合中添加元素:add
        boolean success = list.add("柳岩");
        System.out.println(list); // [柳岩]
        System.out.println("添加的动作是否成功:" + success); // true

        list.add("高圆圆");
        list.add("赵又廷");
        list.add("李小璐");
        list.add("贾乃亮");
        System.out.println(list); // [柳岩, 高圆圆, 赵又廷, 李小璐, 贾乃亮]

        // 从集合中获取元素:get。索引值从0开始
        String name = list.get(2);// 赵又廷

        // 从集合中删除元素:remove。索引值从0开始。
        String whoRemoved = list.remove(3);// 李小璐
        System.out.println(list); // [柳岩, 高圆圆, 赵又廷, 贾乃亮]

        // 获取集合的长度尺寸,也就是其中元素的个数
        int size = list.size();
    }

}
/*
如果希望向集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类”。

基本类型    包装类(引用类型,包装类都位于java.lang包下)
byte        Byte
short       Short
int         Integer     【特殊】
long        Long
float       Float
double      Double
char        Character   【特殊】
boolean     Boolean

所以,
ArrayList<int> listB = new ArrayList<>();是错误写法!泛型只能是引用类型,不能是基本类型
ArrayList<Integer> listC = new ArrayList<>();是正确写法
 */
import java.util.ArrayList;


public class Demo05ArrayListBasic {
    
    

    public static void main(String[] args) {
    
    
        ArrayList<String> listA = new ArrayList<>();

//      ArrayList<int> listB = new ArrayList<>();  // 错误写法!泛型只能是引用类型,不能是基本类型

        ArrayList<Integer> listC = new ArrayList<>();
        listC.add(100);
        listC.add(200);
        System.out.println(listC); // [100, 200]

        int num = listC.get(1);
        System.out.println("第1号元素是:" + num);
    }

}

2.ArrayList的习题

1.题目:生成6个1~33之间的随机整数,添加到集合,并遍历集合。

import java.util.ArrayList;
import java.util.Random;

public class Demo01ArrayListRandom {
    
    

    public static void main(String[] args) {
    
    
        ArrayList<Integer> list = new ArrayList<>();
        Random r = new Random();
        for (int i = 0; i < 6; i++) {
    
    
            int num = r.nextInt(33) + 1;
            list.add(num);
        }
        // 遍历集合
        for (int i = 0; i < list.size(); i++) {
    
    
            System.out.println(list.get(i));
        }
    }

}

2.题目:自定义四个集合对象,添加到集合,并且遍历

import java.util.ArrayList;

public class Student {
    
    

    private String name;
    private int age;

    public Student() {
    
    
    }

    public Student(String name, int age) {
    
    
        this.name = name;
        this.age = age;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }
}

public class Demo02ArrayListStudent {
    
    

    public static void main(String[] args) {
    
    
        ArrayList<Student> list = new ArrayList<>();

        Student one = new Student("洪七公", 20);
        Student two = new Student("欧阳锋", 21);
        Student three = new Student("黄药师", 22);
        Student four = new Student("段智兴", 23);

        list.add(one);
        list.add(two);
        list.add(three);
        list.add(four);

        // 遍历集合
        for (int i = 0; i < list.size(); i++) {
    
    
            Student stu = list.get(i);
            System.out.println("姓名:" + stu.getName() + ",年龄" + stu.getAge());
        }
    }

}

3.题目:将[10, 20, 30]以 {元素@元素@元素}的格式打印出来{10@20@30}

import java.util.ArrayList;

public class Demo03ArrayListPrint {
    
    

    public static void main(String[] args) {
    
    
        ArrayList<String> list = new ArrayList<>();
        list.add("张三丰");
        list.add("宋远桥");
        list.add("张无忌");
        list.add("张翠山");
        System.out.println(list); // [张三丰, 宋远桥, 张无忌, 张翠山]

        printArrayList(list);
    }
    
    public static void printArrayList(ArrayList<String> list) {
    
    
        // {10@20@30}
        System.out.print("{");
        for (int i = 0; i < list.size(); i++) {
    
    
            String name = list.get(i);
            if (i == list.size() - 1) {
    
    
                System.out.println(name + "}");
            } else {
    
    
                System.out.print(name + "@");
            }
        }
    }

}

4.题目:
用一个大集合存入20个随机数字,然后筛选其中的偶数元素,放到小集合当中。

import java.util.ArrayList;
import java.util.Random;

public class Demo04ArrayListReturn {
    
    

    public static void main(String[] args) {
    
    
        ArrayList<Integer> bigList = new ArrayList<>();
        Random r = new Random();
        for (int i = 0; i < 20; i++) {
    
    
            int num = r.nextInt(100) + 1; // 1~100
            bigList.add(num);
        }

        ArrayList<Integer> smallList = getSmallList(bigList);

        System.out.println("偶数总共有多少个:" + smallList.size());
        for (int i = 0; i < smallList.size(); i++) {
    
    
            System.out.println(smallList.get(i));
        }
    }


    public static ArrayList<Integer> getSmallList(ArrayList<Integer> bigList) {
    
    
        ArrayList<Integer> smallList = new ArrayList<>();
        for (int i = 0; i < bigList.size(); i++) {
    
    
            int num = bigList.get(i);
            if (num % 2 == 0) {
    
    
                smallList.add(num);
            }
        }
        return smallList;
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_45014721/article/details/114873065