博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础入门(十)
阅读量:4249 次
发布时间:2019-05-26

本文共 4365 字,大约阅读时间需要 14 分钟。

Java基础入门(十)

1 ArrayList集合类

1.1 ArrayList概述

之前我们学习了数组来进行大量数据的操作,但是数组的缺点也很明显,长度固定,使用的时候特别不方便,有没有更好的方法呢?

Java为我们提供了一个类:ArrayList集合类,它是引用数据类型的一种,可以帮助我们存储多个元素,并且长度可以变化,是可调整大小的数组的实现List接口。可以把它视为一个长度可调整的”数组“。

1.2 数组和集合的区别

数组:

  • 是引用数据类型的一种,可以存储多个元素

  • 数组的长度是固定的 int[] arr1 = new int[10]; int[] arr2 = {1,2,3};

  • 数组即可以存储基本数据类型的数据,又可以存储引用数据类型的数据 int[], String[], Student[]

集合:

  • 是引用数据类型的一种,可以存储多个元素

  • 集合的长度是可以变化的(添加元素,删除集合中的元素)

  • 集合只能存储引用数据类型的数据

ArrayList<int> 错误

ArrayList<Integer> ArrayList<Student> ArrayList<String>正确

1.3 ArrayList的构造方法

public ArrayList():构造一个内容为空的集合。

基本格式:

ArrayList
list = new ArrayList
();

在JDK 7后,右侧泛型的尖括号之内可以留空,但是<>仍然要写。简化格式:

ArrayList
list = new ArrayList<>();

1.4 ArrayList集合的常用成员方法

1).public boolean add(E e) 将指定的元素追加到此集合的末尾(E指“泛型”)
add()方法的参数就是String类型ArrayList
list = new ArrayList<>();
2).public void add(int index,E element) 在此集合中的指定位置插入指定的元素3).public boolean remove(Object o) 删除指定的元素,返回删除是否成功。返回值:是否删除成功!4).public E remove(int index) 删除指定索引处的元素,返回被删除的元素。返回值:被删除的对象!	5).public E set(int index,E element) 修改指定索引处的元素,返回被修改的元素6).public E get(int index) 返回指定索引处的元素7).public int size() 返回集合中的元素的个数8).boolean contains(Object o)  判断集合中是否包含指定的元素9).void clear() 移除此集合(列表)中的所有元素。

异常:

IndexOutOfBoundsException: 索引越界异常,一般集合会报StringIndexOutOfBoundsException: 字符串的索引越界异常ArrayIndexOutOfBoundsException: 数组索引越界异常

注意:ArrayList添加元素,百分之百成功,返回值固定true,不用接收返回值,没有意义

1.5 ArrayList集合的遍历

遍历集合:依次打印集合和中的元素

public E get(int index) 返回指定索引处的元素public int size() 返回集合中的元素的个数
快捷键:list.forifor (int i = 0; i < list.size(); i++) {
String s = list.get(i); System.out.println(s);}

1.6 使用集合存储自定义类型的数据

public static void main(String[] args) {
public static void main(String[] args) {
//创建ArrayList集合,泛型使用Student ArrayList
list = new ArrayList<>(); //创建Student对象 Student s1 = new Student("小明",18); Student s2 = new Student("小华",18); Student s3 = new Student("小飞",18); //把Student对象添加到集合中 list.add(s1); list.add(s2); list.add(s3); //遍历集合,取出每一个Student对象 for (int i = 0; i < list.size(); i++) {
Student s = list.get(i); //System.out.println(s);//?打印的是学生的地址值 // \t:制表符(tab)==>多个空格 System.out.println(s.getName()+"\t"+s.getAge()); } } }

1.7 如何存储基本数据类型

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

基本类型 基本类型包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

1.8 ArrayList练习

需求:

  • 1.定义手机类,包含以下成员属性:
    品牌、颜色、价格
    要求:私有成员属性、无参、全参构造方法、get/set方法
  • 2.定义main()方法,通过控制台接收3部手机信息,并存储到ArrayList集合中;
  • 3.定义方法,可以打印一个ArrayList中的所有手机信息
public class Phone {
//品牌 private String brand; // 颜色 private String color; // 价格 private double price; public Phone() {
} public Phone(String brand, String color, double price) {
this.brand = brand; this.color = color; this.price = price; } public String getBrand() {
return brand; } public void setBrand(String brand) {
this.brand = brand; } public String getColor() {
return color; } public void setColor(String color) {
this.color = color; } public double getPrice() {
return price; } public void setPrice(double price) {
this.price = price; }}
import java.util.ArrayList;import java.util.Scanner;public static void main(String[] args) {
ArrayList
list = new ArrayList<>(); //通过控制台接收3部手机信息 Scanner sc = new Scanner(System.in); for (int i = 1; i <= 3; i++) {
System.out.println("请输入第"+i+"部手机的品牌"); String brand = sc.next(); System.out.println("请输入第"+i+"部手机的颜色"); String color = sc.next(); System.out.println("请输入第"+i+"部手机的价格"); double price = sc.nextDouble(); Phone p = new Phone(brand,color,price); list.add(p); } printArrayList(list);}public static void printArrayList(ArrayList
list){
for (int i = 0; i < list.size(); i++) {
Phone p = list.get(i); System.out.println(p.getBrand()+"\t"+p.getColor()+"\t"+p.getPrice()); }}

转载地址:http://cdwei.baihongyu.com/

你可能感兴趣的文章
简明条件随机场CRF介绍(附带纯Keras实现)
查看>>
####好好好#######让Keras更酷一些!Keras模型杂谈
查看>>
##############缺失值填充的几种方法
查看>>
Keras 处理 不平衡的数据的分类问题 imbalance data 或者 highly skewed data
查看>>
#####好好好好####Keras深度神经网络训练分类模型的四种方法
查看>>
[NLP自然语言处理]谷歌BERT模型深度解析
查看>>
######好好好######MSE与CE的区别?数学推导 本质理解
查看>>
######好好好,本质#####基于LSTM搭建一个文本情感分类的深度学习模型:准确率往往有95%以上
查看>>
深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
查看>>
训练loss不下降原因集合
查看>>
通过GAN网络生成样本的一些想法创造数据
查看>>
###好好好好########深度模型优化性能 调参
查看>>
#######haohaohao#######对抗思想与强化学习的碰撞-SeqGAN模型原理和代码解析
查看>>
TensorFlow 模型如何对外提供服务
查看>>
将keras的h5模型转换为tensorflow的pb模型
查看>>
tensorflow+tensorflow-serving+docker+grpc模型上线部署(不需bazel编译,有代码)
查看>>
甘特图——Excel搞定
查看>>
J2EE是什么(二)
查看>>
J2EE是什么(一)
查看>>
Java学习——何为JNDI
查看>>