Java-7-ArrayList集合类

11. ArrayList 集合类

Person类

package com.tipdm.demo03;

public class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(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;
    }
}

调用Person类,并在数组中存储

数组有一个缺点:一旦创建,程序运行期间长度不可以发生改变。

package com.tipdm.demo03;

/**
 * 题目:
 * 定义一个数组,用来存储3个Person对象。
 *
 * 数组有一个缺点:一旦创建,程序运行期间长度不可以发生改变。
 */
public class demo1 {
    public static void main(String[] args) {
        Person[] array = new Person[3];

        Person one = new Person("迪丽热巴", 18);
        Person two = new Person("赵丽颖", 19);
        Person three = new Person("杨幂", 20);

        array[0] = one;  // 将one当中的地址值复制到数组的0号元素位置
        array[1] = two;
        array[2] = three;

        System.out.println(array[0]);
        System.out.println(array[1]);
        System.out.println(array[2]);

        System.out.println(array[1].getName());
    }
}

数组的长度不可以发生改变。

但是ArrayList集合的长度是可以随意变化的

对于ArrayList来说,有一个尖括号<E>代表泛型。

泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。

注意:泛型只能是引用类型,不能是基本类型。

public class demo2 {
    public static void main(String[] args) {
        // 创建了一个ArrayList集合,集合名称是list,里面装的全都是String字符串类型的数据
        // 备注:从JDK 1.7+ 开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写的。
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);  // []

        // 向集合当中添加一些数据,需要用到add方法。
        list.add("赵丽颖");
        System.out.println(list);
        list.add("迪丽热巴");
        System.out.println(list);
        list.add("古力娜扎");
        System.out.println(list);
    }
}
  • 注意事项:
  • 对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。
  • 如果内容是空,得到的是空的中括号:[]

11.1 ArrayList常用方法

  • public boolean add(E e): 向集合当中添加元素,参数的类型和泛型一致。

备注:对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。

但是对于其他集合(今后学习)来说,add添加动作不一定成功。

  • public E get(int index): 从集合中获取元素,参数是索引编号,返回值就是对应位置的元素。

  • public E remove(int index): 从集合中删除元素,参数是索引编号,返回值就算被删掉的元素。

  • public int size(): 获取集合的尺寸长度,返回值是集合中包含的元素个数。

public class demo3 {
    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);

        list.add("高圆圆");
        list.add("赵又廷");
        list.add("彭于晏");
        list.add("李小龙");
        System.out.println(list);

        // 获取元素
        System.out.println(list.get(4));

        // 删除元素
        String whoRemoved = list.remove(2);
        System.out.println("被删除的人是:" + whoRemoved);
        System.out.println(list);

        // 查看集合长度
        System.out.println(list.size());
    }
}

11.2 遍历集合

package com.tipdm.demo03;

import java.util.ArrayList;

/**
 * 遍历数组
 */
public class demo4 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("高圆圆");
        list.add("赵又廷");
        list.add("彭于晏");
        list.add("李小龙");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

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

基本类型包装类
byteByte
shortShort
intInteger【特殊】
longLong
floatFloat
doubleDouble
charCharacter【特殊】
booleanBoolean
public class demo5 {
    public static void main(String[] args) {
        ArrayList<String> listA = new ArrayList<>();
        // 错误写法! 泛型只能是引用类型,不能是基本类型
//        ArrayList<int> listB = new ArrayList<>();
        ArrayList<Integer> listB = new ArrayList<>();
        listB.add(10);
        listB.add(100);
        listB.add(1000);
        System.out.println(listB);

        int num = listB.get(2);
        System.out.println(num);
    }
}

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

package com.tipdm.demo03;

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

/**
 * 题目:
 * 生成6个1~33之间的随机整数,添加到集合,并遍历集合
 */
public class demo6 {
    public static void main(String[] args) {
        Random ran = new Random();
        ArrayList<Integer> listInt = new ArrayList<>();
        for (int i = 0; i < 6; i++) {
            listInt.add(ran.nextInt(33) + 1);
        }
        for (int i = 0; i < listInt.size(); i++) {
            System.out.println(listInt.get(i));
        }
    }
}

11.5 题目:自定义4个学生对象,添加到集合,并遍历

学生类:

package com.tipdm.demo03;

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;
    }
}

调用:

package com.tipdm.demo03;

import java.util.ArrayList;

/**
 * 题目:
 * 自定义4个学生对象,添加到集合,并遍历
 */
public class demo7 {
    public static void main(String[] args) {
        Student stu1 = new Student("赵丽颖", 18);
        Student stu2 = new Student("杨幂", 19);
        Student stu3 = new Student("古力娜扎", 20);
        Student stu4 = new Student("蒙娜丽莎", 60);
        ArrayList<Student> listStu = new ArrayList<>();
        listStu.add(stu1);
        listStu.add(stu2);
        listStu.add(stu3);
        listStu.add(stu4);
        for (int i = 0; i < listStu.size(); i++) {
            System.out.println(listStu.get(i).getName());
        }
    }
}

11.6 题目:定义以指定格式打印集合的方法

(ArrayList类型作为参数), 使用{}括起来,使用@分隔每个元素。
格式按照{元素@元素@元素}
package com.tipdm.demo03;

import java.util.ArrayList;

/**
 * 定义以指定格式打印集合的方法(ArrayList类型作为参数), 使用{}括起来,使用@分隔每个元素。
 * 格式按照{元素@元素@元素}
 */
public class demo8 {
    public static void main(String[] args) {
        ArrayList<String> listStr = new ArrayList<>();
        listStr.add("赵丽颖");
        listStr.add("杨幂");
        listStr.add("古力娜扎");
        listStr.add("张三丰");
        printList(listStr);
    }

    public static void printList(ArrayList<String> listStr){
        System.out.print("{");
        for (int i = 0; i < listStr.size(); i++) {
            System.out.print(listStr.get(i));
            if(i != listStr.size() - 1){
                System.out.print("@");
            }
        }
        System.out.print("}");
    }
}

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

要求使用自定义的方法来实现筛选。

package com.tipdm.demo03;

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

/**
 * 题目:
 * 用一个大集合存入20个随机数,然后筛选其中的偶数元素,放到小集合当中。
 * 要求使用自定义的方法来实现筛选。
 */
public class demo9 {
    public static void main(String[] args) {
        Random ran = new Random();
        ArrayList<Integer> listInt = new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            listInt.add(ran.nextInt(100));
        }
        System.out.println("大集合:" + listInt);
        ArrayList<Integer> listSmall = getEven(listInt);
        System.out.println("总共有" + listSmall.size() + "个偶数!");
        System.out.println("小集合:" + listSmall);
    }

    public static ArrayList<Integer> getEven(ArrayList<Integer> listBig){
        ArrayList<Integer> listSmall = new ArrayList<>();
        for (int i = 0; i < listBig.size(); i++) {
            if (listBig.get(i) % 2 == 0){
                listSmall.add(listBig.get(i));
            }
        }
        return listSmall;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值