文章目录
- 前言
- 一、集合
- 二、基本数据类型的包装类
- 三、ArryList
- 1 ArryList对象的创建
- 2 ArryList常见成员方法
- (1)boolean add(E e) : 添加元素,返回值表示是否添加成功
- (2)void add(int index, E e) :在指定索引位置插入元素。
- (3)boolean remove(E e) : 删除第一个指定元素 e,返回值表示是否删除成功
- (4)E remove(int index) : 删除指定索引元素,返回被删除元素
- (5)E set(int index, E e) : 修改指定索引下的元素,返回原来的元素
- (6)E get(int index) : 获取指定索引处的元素
- (7)int size() : 返回集合的长度
- (8)boolean isEmpty() :判断数组列表是否为空。
- 3 ArryList的遍历
- (1)使用get()方法遍历
- (2)使用增强for循环遍历
- 八、练习
- 1 学生管理系统(简易版)--- 使用ArrayList还是有一点繁琐,使用字典会好很多。
- 2 学生管理系统(升级版):在上面简易版的上面继续添加登录注册等功能
前言
一、集合
前面我们学数组的时候,发现数组的一旦创建长度就不可变,很不好用。因此,就有了这里的集合来解决这一缺点。
但很遗憾,虽然集合解决了数组不能自动扩容的缺点,但集合有有新的缺点。
- 数组: 基本数据类型、引用数据类型都可以存进去(但一个数组里面只能有一种数据类型)
- 集合:只能存引用数据类型;基本数据类型不能直接存,必须将其变成相对应的包装类才能存。什么是包装类后面会讲
java提供了很多的集合类都符合上述规则,常见的有ArryList, Map , HashSet等等。下面我们依次学习这些常见的数据结构(java集合)。
下面重基本数据类型的包装类开始吧!
二、基本数据类型的包装类
为了解决java集合不能存基本数据类型的缺陷,java提供了基本数据类型的包装类的解决方案。
基本数据类型 | 对应的包装类 |
---|---|
byte | Byte |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
可以看到只有char和int的包装类名有点变化要单独记一下,其余的都是首字母大写就可以了。
具体怎么用的建议先了解ArryList,下面给出示例:包装类就可以添加进集合了,表示方法和普通的写法一样,只是泛型要写包装类就是了。
Integer
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);for (Integer i : list) {System.out.print(i + " "); // 1 2 3
Character
ArrayList<Character> list = new ArrayList<>();
list.add('a');
list.add('b');
list.add('c');for (Character i : list) {System.out.print(i + " "); // a b c
}
三、ArryList
查阅帮助文档可以发现这个类在 java.util包下面
在之前创建数组我们采用的构造方式是 数组类型[] 数组名 = new 数组类型[]{元素1,元素2,元素3…}这种方式,这是独属于数组的构造方式。今后我们大多集合(还有些其他集合使用其他构造方式)都是使用 new + 泛型这种构造方式来创建集合对象。什么是泛型,打开ArryList的帮助文档:
上面这个<数据类型>括号就是泛型,用来指定集合里面的数据类型的。
了解了泛型就可以往下学习了
1 ArryList对象的创建
- jdk7前的语法: Array<数据类型> 变量名 = new Array<数据类型> ()
- jdk7以后的语法: Array<数据类型> 变量名 = new Array<> ()
// ArrayList<String> ls = new ArrayList<String>();
ArrayList<String> ls = new ArrayList<>();ls.add("a");ls.add("b");System.out.println(ls); // [a, b]
【注】:这个就和Python列表很像了
2 ArryList常见成员方法
【注】:其中E表示ArryList里面元素数据类型 , e表示具体数据元素
(1)boolean add(E e) : 添加元素,返回值表示是否添加成功
(2)void add(int index, E e) :在指定索引位置插入元素。
(3)boolean remove(E e) : 删除第一个指定元素 e,返回值表示是否删除成功
(4)E remove(int index) : 删除指定索引元素,返回被删除元素
(5)E set(int index, E e) : 修改指定索引下的元素,返回原来的元素
(6)E get(int index) : 获取指定索引处的元素
(7)int size() : 返回集合的长度
// ArrayList<String> ls = new ArrayList<String>();
ArrayList<String> ls = new ArrayList<>();
ls.add("aaa");
ls.add("bbb");
ls.add("ccc");
ls.add("aaa");
System.out.println(ls); // [aaa, bbb, ccc, aaa]ls.remove("aaa"); // 删除第一个aaa
System.out.println(ls); // [bbb, ccc, aaa]ls.remove(1); // 删除索引为1的元素
System.out.println(ls); // [bbb, aaa]ls.set(1, "ddd"); // 修改索引为1的元素
System.out.println(ls); // [bbb, ddd]System.out.println(ls.get(1)); // ddd
System.out.println(ls.size()); // 2
(8)boolean isEmpty() :判断数组列表是否为空。
这个判断为空有专门方法,没有Python那么方便。
【注】:java中的 逻辑运算符 ! 和Python中的not有同样效果
ArrayList<