集合的由来

我们想存储多个数据,选择的容器可以是数组。而数组的长度是固定的,无法适应数据变化的需求。为了解决这个问题,Java提供了另一个容器 java.util.ArrayList 集合类,让我们可以更便捷的存储和操作对象数据。数组的长度不可以发生改变。但是ArrayList集合的长度是可以随意变化的。

ArrayList类概述

java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储的元素。 ArrayList 中可不断添加元素,其大小也自动增长。对于ArrayList来说,有一个尖括号<E>代表泛型。泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。注意:泛型只能是引用类型,不能是基本类型。

ArrayList使用步骤

查看类

  • java.util.ArrayList <E> :该类需要 import导入使后使用。<E> ,表示一种指定的数据类型,叫做泛型。 E ,取自Element(元素)的首字母。在出现 E 的地方,我们使用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。
查看构造方法
  • public ArrayList() :构造一个内容为空的集合。
基本格式:
 //创建一个泛型为String的ArrayList集合
ArrayList<String> arrayList = new ArrayList<String>();
在JDK 7后,右侧泛型的尖括号之内可以留空,但是<>仍然要写。
简化格式:
 //创建一个泛型为String的ArrayList集合
ArrayList<String> arrayList = new ArrayList<>();
查看常用的成员方法
  • public boolean add(E e) : 将指定的元素添加到此集合的尾部。参数 E e ,在构造ArrayList对象时, <E> 指定了什么数据类型,那么 add(E e) 方法中,只能添加什么数据类型的对象。对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。但是对于其他集合(今后学习)来说,add添加动作不一定成功。
  • public E get(int index):从集合当中获取元素,参数是索引编号,返回值就是对应位置的元素。
  • public E remove(int index):从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。
  • public int size():获取集合的尺寸长度,返回值是集合中包含的元素个数。
代码举例
package MyCode;

import java.util.ArrayList;

public class ArrayListMethod {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<String> list = new ArrayList<String>();
        //添加元素
        list.add("hello");
        list.add("world");
        list.add("I");
        list.add("love");
        list.add("java");
        //public E get(int index):返回指定索引处的元素
        System.out.println("get的元素:" + list.get(3));
        //public int size():返回集合中的元素的个数
        System.out.println("集合中元素的个数:" + list.size());
        //public E remove(int index):删除指定索引处的元素,返回被删除的元素
        System.out.println("删除的指定index元素:" + list.remove(0));
        //遍历输出
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

代码执行后的结果

包装类概述

Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下

基本类型与对应的包装类对象之间,来回转换的过程称为”装箱“与”拆箱“:由于我们经常要做基本类型与包装类之间的转换,从Java 5(JDK 1.5)开始,基本类型与包装类的装箱、拆箱动作可以自动完成。
  • 装箱:从基本类型转换为对应的包装类对象。
  • 拆箱:从包装类对象转换为对应的基本类型。
Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);        
i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;        
//加法运算完成后,再次装箱,把基本数值转成对象。     

基本类型与字符串之间的转换

基本类型转换为String  

  • 基本类型与字符串之间的转换三种方式,最简单的一种方式:基本类型直接与””相连接即可;如:34+""

String转换成对应的基本类型   

除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型:

  • public static byte parseByte(String s):将字符串参数转换为对应的byte基本类型。
  • public static short parseShort(String s):将字符串参数转换为对应的short基本类型。
  • public static int parseInt(String s):将字符串参数转换为对应的int基本类型。
  • public static long parseLong(String s):将字符串参数转换为对应的long基本类型。
  • public static float parseFloat(String s):将字符串参数转换为对应的float基本类型。
  • public static double parseDouble(String s):将字符串参数转换为对应的double基本类型。
  • public static boolean parseBoolean(String s):将字符串参数转换为对应的boolean基本类型。

Integer类的静态方法parseXxx为例

public class Demo18WrapperParse {
    public static void main(String[] args) {
        int num = Integer.parseInt("100");
    }
}

注意:

如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出java.lang.NumberFormatException异常。

如何存储基本数据类型

ArrayList对象不能存储基本类型,只能存储引用类型的数据。类似 <int> 不能写,但是存储基本数据类型对应的包装类型是可以的。所以,想要存储基本类型数据, <> 中的数据类型,必须是基本类型的包装类。

package MyCode;
import java.util.ArrayList;

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

 */
public class MyArrayListBasic {

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

}

代码执行后的结果

ArrayList练习

用一个大集合存入1到1000之间的20个随机数字,,然后筛选其中的偶数元素,放到小集合当中。要求使用自定义的方法来实现筛选。

分析:

  1. 需要创建一个大集合,用来存储int数字:<Integer>
  2. 随机数字就用Random nextInt
  3. 循环20次,把随机数字放入大集合:for循环、add方法
  4. 定义一个方法,用来进行筛选。筛选:根据大集合,筛选符合要求的元素,得到小集合。方法三要素:返回值类型,方法名称,参数列表。
  5. 判断(if)是偶数:num % 2 == 0
  6. 如果是偶数,就放到小集合当中,否则不放。

代码实现

package demo05;

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

public class MyArrayList {
    public static void main(String[] args) {
        // 创建Random 对象
        Random random = new Random();
        // 创建ArrayList 对象
        ArrayList<Integer> list = new ArrayList<>();
        // 添加随机数到集合
        for (int i = 0; i < 20; i++) {
            int r = random.nextInt(1000) + 1;
            list.add(r);
        }
        // 调用偶数集合的方法
        ArrayList<Integer> arrayList = getArrayList(list);
        System.out.println(arrayList);
    }

    public static ArrayList<Integer> getArrayList(ArrayList<Integer> list) {
        // 创建小集合,来保存偶数
        ArrayList<Integer> smallList = new ArrayList<>();
        // 遍历list
        for (int i = 0; i < list.size(); i++) {
            // 获取元素
            Integer num = list.get(i);
            // 判断为偶数,添加到小集合中
            if (num % 2 == 0) {
                smallList.add(num);
            }
        }
        // 返回小集合
        return smallList;
    }
}

代码执行后的结果

注意

java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为 查询数据、遍历数据,所以 ArrayList 是最常用的集合。 许多程序员开发时非常随意地使用ArrayList完成任何需求,并不严谨,这种用法是不提倡

最新文章

  1. 跟我学习Storm_Storm主要特点
  2. September 9th 2016 Week 37th Friday
  3. asterisk中使用dahdi通道呼出的注意事项
  4. Java操作XML的工具类
  5. logstash date插件
  6. ISO14443-4块传输的实现(卡)
  7. 创业不要在IT业内创(市场太小,而且都喜欢自己折腾、没有花钱的习惯)
  8. java实现树型结构样式
  9. Linux 系统的启动过程
  10. lvm语法
  11. 95%的中国网站需要重写CSS
  12. SpringMVC使用Burlap发布远程服务
  13. 【PAT】1051 Pop Sequence (25)(25 分)
  14. java.io.FileNotFoundException(系统找不到指定的路径。)
  15. 【OCP-12c】CUUG 071题库考试原题及答案解析(14)
  16. Java Basis
  17. 20155321 2016-2017-2《Java程序设计》课程总结
  18. JAVA基础学习之路(十一)引用传递
  19. bzoj2734:[HNOI2012]集合选数(状压DP)
  20. Apache Hive (四)Hive的连接3种连接方式

热门文章

  1. uni-app微信小程序开发之引入腾讯视频小程序播放插件
  2. Newman
  3. docker-compose部署
  4. B树?这篇文章彻底看懂了!
  5. Java垃圾回收机制你还不明白?一线大厂面试必问的!
  6. python学习-caculator
  7. OS OSTEP (Operating Systems Three Easy pieces 操作系统导论 )
  8. 《Java基础知识》Java this关键字详解
  9. 关于爬取babycenter.com A-Z为顺序的所有英文名及其详细属性
  10. Python基础-day01-3