java学习day-15 集合、ArrayList集合

集合

为什么要有集合?

集合就是一个容器,和数组一样都是用来装东西的。集合能自动扩容,可以更快的解决庞大的数据。比数组更高效。数组的长度是固定,操作庞大数据时需要手动扩容。

集合存储数据类型的特点

数组可以存储基本数据类型也可以存储引用数据类型。但是集合只能存储储引用数据类型,存储基本数据类型的时候必须转换为对应的包装类。

集合和数组的对比

①长度:数组的长度是固定,集合的长度是可变。

②存储类型:

数组可以存储基本数据类型也可以存储引用数据类型。

集合只能存储储引用数据类型,存储基本数据类型转换为对应的包装类。

ArrayList集合入门

!!!这里学习只是一个小小的入门。

java 复制代码
public class ArrayListTest {

    public static void main(String[] args) {


        //这里注意:
        // <>:指的是泛型,类型参数用于类的定义中,则该类被称为泛型类.

        //JDK1.7 的写法
        //ArrayList<String> list = new ArrayList<String>();

        //此时已经创建 ArrayList对象,而Java已经写好了这个类,直接使用即可

        //JDK1.8以后写法
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);

        //ArrayList只能操作引用数据类行,其输出的不是地址,而是集合中存储的内容
        //使用 "[]"括起来的所有的内容。

        //ArrayList的基本使用



    }
}

ArrayList集合简单使用

java 复制代码
/**
 * 成员方法:
 *  boolean add(E e) 添加元素,从末尾添加
 *  void add(int index, E element) 将指定元素插入此列表中的指定位置。
 *
 *  boolean remove(E e) 删除元素,从该列表中删除指定元素的第一个匹配项(如果存在)。
 *  E remove(int index) 删除此列表中指定位置的元素。
 *
 *  E set(int index, E element) 修改元素,用指定的元素替换此列表中指定位置的元素。
 *
 *  E get(int index, E element) 查询元素,返回此列表中指定位置的元素。
 *  int size() 返回此列表中的元素数。 获取长度
 *
 * */


public class ArrayListTest {

    public static void main(String[] args) {

        //1.创建一个集合
        ArrayList<String> list = new ArrayList<>();

        //2.添加元素
        list.add("yyds");
        list.add("dddd");
        list.add("ootd");
        //System.out.println(list);

        /**
            //3.删除元素
            list.remove("dddd"); //在表中匹配删除项,存在就删除
            list.remove(1);   //删除此列表中指定位置的元素
            //System.out.println(list);
        */


        //4.修改元素
        list.set(2,"hhhh");//用指定的元素替换此列表中指定位置的元素
        //System.out.println(list);


        //5.查询元素
        list.get(2);
       // System.out.println(list);//返回此列表中指定位置的元素


        //6.遍历集合
        for (int i = 0; i < list.size(); i++) {
            //i:是索引
            //size():集合的长度
            list.get(i);//获取长度
        }
        System.out.println(list);
    }
}

简单练习

需求:定义一个集合,添加字段,并进行遍历

遍历格式参照:[元素1,元素2,元素3...]

java 复制代码
public class ArrayListTest {

    /*
     *   需求:定义一个集合,添加字段,并进行遍历
     *   遍历格式参照:[元素1,元素2,元素3...]
     * */
    public static void main(String[] args) {

        //创建ArrayList对象
        ArrayList<String> list = new ArrayList();
        //添加元素
        list.add("昨天学习了");
        list.add("今天学习了");
        list.add("后天学习了");

        //遍历
        System.out.print("[");
        for (int i = 0; i < list.size(); i++) {
            if (i == list.size() - 1) {
                System.out.print(list.get(i));
            }else {
                System.out.print(list.get(i)+", ");
            }

        }
        System.out.println("]");
    }
}

输出:

需求:定义一个集合,添加数字,并进行遍历

遍历格式参照:[元素1,元素2,元素3...]

java 复制代码
public class ArrayListTest2 {

    /*
    *   需求:定义一个集合,添加数字,并进行遍历
    *   遍历格式参照:[元素1,元素2,元素3...]
    * */

    public static void main(String[] args) {
       // 冷知识:这里的说的集合只能存放引用数据类型,所以这里引入包装类
       /**
        *
        * byte     Byte
        * short    Short
        * int      Integer
        * char     Character
        * long     Long
        * float    Float
        * double   Double
        * boolean  Boolean
        *
        */

        //创建集合
        ArrayList<Integer> list = new ArrayList();

        //这里JDK1.5以后呢 int 和 Integer 是自动转换
        //添加元素
        list.add(111);
        list.add(222);
        list.add(333);

        //遍历
        System.out.print("[");
        for (int i = 0; i < list.size(); i++) {
            if(i == list.size()-1){
                System.out.print(list.get(i));
            }else{
                System.out.print(list.get(i)+", ");
            }
        }
        System.out.print("]");
    }
}

输出:

需求:

1.自定义集合,存入三个对象

用户属性:id,username,password

2.要求:自定义一个方法,根据id查找对应大的信息。

如果存在,返回true / 如果存在,返回索引

如果不存在,返回false / 如果不存在,返回-1

java 复制代码
//用户对象
public class User {

    private String id;
    private String username;
    private String password;

    public User() {
    }

    public User(String id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}


public class ArrayLListTest {
    public static void main(String[] args) {
    /*
        需求:
        1.自定义集合,存入三个对象
            用户属性:id,username,password
        2.要求:自定义一个方法,根据id查找对应大的信息。
            如果存在,返回true    / 如果存在,返回索引
            如果不存在,返回false  / 如果不存在,返回-1
    * */

        //1.创建集合
        ArrayList<User> list = new ArrayList<>();

        //2.创建用户对象
        User user1 = new User("0001", "aa", "111");
        User user2 = new User("0002", "jj", "222");
        User user3 = new User("0003", "cc", "333");

        //3.添加三个对象
        list.add(user1);
        list.add(user2);
        list.add(user3);

        //4.调用方法,查找id是否存在,直接打印
        System.out.println(contains(list, "0003"));
        //System.out.println(getIndex(list, "0004"));
    }

    public static boolean contains(ArrayList<User> list, String id) {
        /*//遍历集合
        for (int i = 0; i < list.size(); i++) {
            User u = list.get(i);
            String uid = u.getId();
            if (uid.equals(id)) {
                return true;//如果存在就返回true
            }
        }
        //当集合内的数据全部比较完了,还是没有就直接返回false
        return false;*/
        return getIndex(list, id) >= 0;
    }

    public static int getIndex(ArrayList<User> list, String id) {
        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            User u = list.get(i);
            String uid = u.getId();
            if (uid.equals(id)) {
                return i;//如果存在就返回索引
            }
        }
        return -1;//当集合内的数据全部比较完了,还是没有就直接返回-1
    }
}

输出:

需求:

1.定义一个手机对象Phone

属性:品牌brand、价格price

2.定义及一个集合,存入三个手机对象,分别是小米3999,华为7999,苹果5999

3.定义一个方法,将价格低于6999的手机信息返回

java 复制代码
//手机对象
public class Phone {
    // 属性:品牌brand、价格price
    private String brand;
    private int price;

    public Phone() {
    }

    public Phone(String brand, int price) {
        this.brand = brand;
        this.price = price;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

}

public class ArrayListTest {
    /*
    * 需求:
        1.定义一个手机对象Phone
          属性:品牌brand、价格price
        2.定义及一个集合,存入三个手机对象,分别是小米3999,华为7999,苹果5999
        3.定义一个方法,将价格低于6000的手机信息返回
    * */
    public static void main(String[] args) {

        //1.创建集合
        ArrayList<Phone> list = new ArrayList<>();
        //2.创建手机对象
        Phone p1 = new Phone("小米", 3999);
        Phone p2 = new Phone("华为", 7999);
        Phone p3 = new Phone("苹果", 5999);
        //3.添加手机对象到集合
        list.add(p1);
        list.add(p2);
        list.add(p3);

        //4.条用方法,返回手机信息且价格低于6999
        ArrayList<Phone> phoneInfoList = getPhoneInfo(list);

        //5.遍历集合
        for (int i = 0; i < phoneInfoList.size(); i++) {
            Phone phone = phoneInfoList.get(i);
            System.out.println(phone.getBrand()+", "+phone.getPrice());
        }
    }

    //定义方法
    public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list) {
        //定义集合在存放价格低于6000的手机信息
        ArrayList<Phone> phoneList = new ArrayList<>();
        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            Phone p = list.get(i);
            if (p.getPrice() < 6000) {
                phoneList.add(p);
            }
        }
        return phoneList;

    }
}

输出:

相关推荐
DeepModel5 小时前
通俗易懂讲透 Q-Learning:从零学会强化学习核心算法
人工智能·学习·算法·机器学习
handler016 小时前
从零实现自动化构建:Linux Makefile 完全指南
linux·c++·笔记·学习·自动化
安小牛7 小时前
Android 开发汉字转带声调的拼音
android·java·学习·android studio
仙女修炼史8 小时前
CNN的捷径学习Shortcut Learning in Deep Neural Networks
人工智能·学习·cnn
亚空间仓鼠8 小时前
网络学习实例:网络理论知识
网络·学习·智能路由器
薛定e的猫咪9 小时前
多智能体强化学习求解 FJSP 变体全景:动态调度、AGV 运输、绿色制造与开源代码导航
人工智能·学习·性能优化·制造
风兮雨露10 小时前
一建学习流程以及计划(附资料)
学习
星幻元宇VR10 小时前
VR单人地震体验平台,学习科学避险
科技·学习·安全·vr·虚拟现实
坚持就完事了10 小时前
Hadoop实战初步学习
hadoop·学习
for_ever_love__10 小时前
UI学习:多界面传值的正向传值(属性传值)和反向传值(代理传值)
学习·ui·ios·objective-c