首页 > 编程语言 >JavaSE(08) - 集合 - ArrayList

JavaSE(08) - 集合 - ArrayList

时间:2023-10-04 22:22:45浏览次数:34  
标签:返回 08 list System add 集合 JavaSE ArrayList

JavaSE(08) - 集合 - ArrayList

p111 ArrayList基本使用

创建集合对象 , 泛型 : 限定集合中的数据类型. 在jdk7中,后面的<>中可以不写数据类型.

集合在底层做了一些处理, 打印对象不是地址值, 而是集合中存储的内容.

public class ArrayListBasic {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<String> list = new ArrayList<>();
        //增,添加成功返回true,我们一般不关注他的返回值
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        //删,可以删除元素,删除成功返回true. 还可以通过索引删除(索引规则和数组,字符串一样),删除成功返回被删除的元素.
//        boolean aaa = list.remove("aaa");
//        String remove0 = list.remove(1);
        //改,通过索引修改元素,返回被覆盖的元素
//        String aaa1 = list.set(0, "aaa");
        //查,返回指定索引的元素
        String s = list.get(1);
        //长度,
        int size = list.size();
        //遍历集合(使用get,size方法)
        System.out.print("[");
        for (int i = 0; i < list.size(); i++) {
            String s1 = list.get(i);
            if (i == list.size() - 1) {
                System.out.print(s1);
            } else System.out.print(s1 + ", ");
        }
        System.out.println("]");
    }
}

p112 集合练习 - 包装类

集合中只能存储引用数据类型,所以要添加基本数据类型必须要用它们的包装类

基本数据类型对应的包装类

byte --Byte

short --Short

char --Character

int --Integer

long --Long

float --Float

double --Double

boolean --Boolean

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

public class ArrayListDemo_Integer {
    public static void main(String[] args) {
        //创建集合
        ArrayList<Integer> list = new ArrayList<>();
        //添加元素,jdk5之后int 和 Integer之间可以互相转换
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        //遍历集合
        System.out.print("[");
        for (int i = 0; i < list.size(); i++) {
            Integer integer = list.get(i);
            if (i == list.size() - 1) {
                System.out.print(integer);
            } else System.out.print(integer + ", ");
        }
        System.out.println("]");
    }
}

p113 集合练习- 添加学生对象并遍历

/*p113 集合练习- 添加学生对象并遍历
* 键盘录入3个学生信息
* 两个注意点: 
* 1.创建集合时,集合初始长度为0,添加对象遍历集合时不能用 "i<list.size()"方法,
* 要写需要添加对象的个数.
* 2.添加对象遍历集合时,不能把创建学生对象的语句写在循环外面,否则就是反复赋值一个对象了.
* */
public class addStudentObject {
    public static void main(String[] args) {
        //创建集合
        ArrayList<student> list = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            student s = new student();//创建学生对象
            System.out.println("输入姓名:");
            String name = sc.next();//键盘录入姓名年龄
            System.out.println("输入年龄:");
            int age = sc.nextInt();
            s.setName(name);//赋值给对象的属性
            s.setAge(age);
            //把对象添加到集合
            list.add(s);
        }
        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            student s = list.get(i);
            System.out.println(s.getName() + ", " + s.getAge());
        }
    }
}

练习3,添加用户对象并判断是否存在

需求: 1.main方法中定义一个集合, 存入3个对象.用户属性为: id,username,password
2.要求:定义一个方法, 根据id查找对应的用户信息. 如果存在,返回true 如果不存在,返回false

小技巧: 在创建对象并给属性赋值时,你如果忘记了构造方法里属性的顺序,就可以用快捷键 CTRL+P 显示提示.

/*练习3,添加用户对象并判断是否存在
需求: 1.main方法中定义一个集合, 存入3个对象.用户属性为: id,username,password
      2.要求:定义一个方法, 根据id查找对应的用户信息.  如果存在,返回true  如果不存在,返回false
						如果存在,返回索引,如果不存在,返回-1*/
public class DoesUserExist {
    public static void main(String[] args) {
        //定义一个集合
        ArrayList<user> list = new ArrayList<>();
        //创建3个对象,用户属性为: id,username,password
        user u1 = new user("001", "George", "123456");
        user u2 = new user("002", "Mike", "m123");
        user u3 = new user("003", "Marie", "123abc");
        //存入集合.
        list.add(u1);
        list.add(u2);
        list.add(u3);
        //查找
        System.out.println(getIndex("001", list));
        System.out.println(isExist("001",list));
    }

    //定义一个方法, 根据id查找对应的用户信息,如果存在,返回索引,如果不存在,返回-1
    public static int getIndex(String id, ArrayList<user> list) {
        for (int i = 0; i < list.size(); i++) {//遍历集合
            String userId = list.get(i).getId();//获得元素对象的ID属性
            if (userId.equals(id)) {//和形参比较
                return i;       //返回索引
            }
        }
        return -1;
    }
    //根据id查找对应的用户信息,如果存在返回true,如果不存在就返回false.
    //可以调用getIndex方法,如果getIndex方法返回-1就是不存在.
    public static boolean isExist(String id, ArrayList<user> list) {
        return getIndex(id, list) >= 0;
    }
}

p115 集合练习 - 返回多个数据

返回多个数据 - 添加手机对象并返回要求的数据
需求: 定义Javabean类,Phone Phone的属性: 品牌(brand), 价格(price).
main方法中定义一个集合, 存入3个手机对象. 分别为:小米,1000. 苹果,8000. 锤子,2999.
定义一个方法, 将价格低于3000的手机信息返回.

技巧: 如果我们要返回多个数据,可以先把数据放到一个容器中(集合,数组),再把容器返回.

package ArrayList;

import java.util.ArrayList;

/*p115 练习4 - 返回多个数据 - 添加手机对象并返回要求的数据
需求: 定义Javabean类,Phone   Phone的属性: 品牌(brand), 价格(price).
main方法中定义一个集合, 存入3个手机对象.  分别为:小米,1000. 苹果,8000. 锤子,2999.
定义一个方法, 将价格低于3000的手机信息返回.*/
public class returnMultipleNumbers {
    public static void main(String[] args) {
        //定义一个集合
        ArrayList<Phone> list = new ArrayList<>();
        //创建3个对象
        Phone p1 = new Phone("小米", 1000);
        Phone p2 = new Phone("苹果", 8000);
        Phone p3 = new Phone("锤子", 2999);
        //加入集合
        list.add(p1);
        list.add(p2);
        list.add(p3);
        //调用方法,返回数据
        ArrayList<Phone> phoneMassage = getPhoneMassage(list);
        printArrayList(phoneMassage);
    }
    //返回价格低于3000的手机信息
    //如果我们要返回多个数据,可以先把数据放到一个容器中(集合,数组),再把容器返回,
    public static ArrayList<Phone> getPhoneMassage(ArrayList<Phone> list) {
        //新建集合,用来装要返回数据
        ArrayList<Phone> result = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            Phone p = list.get(i);
            int price = p.getPrice();
            //如果price 小于3000 就把此对象添加到result集合中
            if (price < 3000) {
                result.add(p);
            }
        }
        return result;//返回集合
    }
    //遍历集合方法
    public static void printArrayList(ArrayList<Phone> list) {
        for (int i = 0; i < list.size(); i++) {
            Phone phone = list.get(i);
            System.out.println(phone.getBrand() + "," + phone.getPrice());
        }
    }
}

标签:返回,08,list,System,add,集合,JavaSE,ArrayList
From: https://www.cnblogs.com/lg369/p/17742844.html

相关文章

  • Flutter/Dart第08天:Dart类型(内置类型、记录、集合、泛型和类型别名)
    Dart内置类型(共10类)Dart官网文档:https://dart.dev/language/built-in-typesDart内置类型即DartSDK自带的类型,我们编程过程中可直接使用的类型,主要分为10类:数值类型:包括int类、double类等。字符串类型:即String类。布尔类型:即bool类。记录类型:即Record类,Dart3中开始支持(最......
  • 08. 点亮LED
    一、LED简介  发光二极管,简称为LED,是一种常用的发光器件,它由含镓(Ga)、砷(As)、磷(P)、氮(N)等的化合物制成。通过电子与空穴复合释放能量发光,它在照明领域应用广泛。  发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P......
  • 错误解决Error: error:0308010C:digital envelope routines::unsupported
    问题原因:查了下原因,主要是nodeJsV17版本发布了OpenSSL3.0对算法和秘钥大小增加了更为严格的限制,nodeJsv17之前版本没影响,但V17和之后版本会出现这个错误。我的node版本是v18.12.1解决方式(仅windows):在package.json的scripts中新增SETNODE_OPTIONS=--openssl-lega......
  • [官方培训]08-UE动画基础 戴浩军 Epic 笔记
    UE动画基础UE动画概述UE动画功能强大,复杂,灵活不同类型项目对动画系统应用范围各不相同“动画”作为一个宽泛概念,在引擎中有多种实现方式,需要灵活选择影视CG相关常见动画种类浏览骨骼网格体动画(动画序列,变形目标,动画曲线,PoseAsset)物理动画(刚体,布料,破碎,实时毛发模拟)顶点......
  • 408---十字链表法
    一、十字链表法画法参考: https://www.bilibili.com/video/BV1hV411t7SC/?spm_id_from=333.337.search-card.all.click&vd_source=87f7ad8544d4c3ad070c5c2ff28b7698方法就是先画出邻接表然后从头接点开始连接其相应的弧结点,如图,V1头节点的第二个数据项去连接弧结点的第三个......
  • # 2023-2024-1 20231308 《计算机基础与程序设计》第二周学习总结
    2023-2024-120231308《计算机基础与程序设计》第二周学习总结作业信息作业课程2023-2024-1-计算机基础与程序设计作业要求2023-2024-1计算机基础与程序设计第二周作业这个作业的目标学会两本教材第一章的内容,掌握gcc和gdb基本操作作业正文https://www.cnblo......
  • P3477 [POI2008] PER-Permutation 解题报告
    我咕咕咕了这道题半年之久?好像洛谷好多题解都被hack了啊,但是没有被撤。(本题解现有hack均通过)题目链接折叠题干[POI2008]PER-Permutation题目描述Multisetisamathematicalobjectsimilartoaset,buteachmemberofamultisetmayhavemorethanonemem......
  • 算法训练day23 LeetCode669.108.538.
    算法训练day23LeetCode669.108.538.669.修剪二叉搜索树题目669.修剪二叉搜索树-力扣(LeetCode)题解代码随想录(programmercarl.com)递归不能单纯地由根节点的值直接删除单值,需要继续判断子节点是否符合条件classSolution{public:TreeNode*trimBST(T......
  • 2023-2024-1 20231408 《计算机基础与程序设计》第一周学习总结
    2023-2024-120231408《计算机基础与程序设计》第一周学习总结作业信息这个作业属于哪个课程<2023-2024-1-计算机基础与程序设计>这个作业要求在哪里<2023-2024-1计算机基础与程序设计第一周作业>这个作业的目标<快速浏览一遍《计算机科学概论》并提出自己的疑问......
  • 2023-2024-1 20231308 《计算机基础与程序设计》第一周学习总结
    2023-2024-120231308《计算机基础与程序设计》第一周学习总结作业信息作业课程2023-2024-1-计算机基础与程序设计作业要求2023-2024-1计算机基础与程序设计第一周作业作业目标教材内容学习作业正文2023-2024-120231308《计算机基础与程序设计》第一周学习......