1 - 集合
1.1 - 概述
在内存中申请一块空间用来存储数据,在java中集合实际上是替换掉定长数组的一种引用数据类型。
1.2 - 集合与数组的区别
长度区别
数组长度固定,定义长了会造成内容空间的浪费,定义短了内存空间不够用。
集合的大小可变,用多少空间拿多少空间。
内容区别
数组可以存基本数据类型和引用数据类型。
集合只存储引用数据类型。
元素区别
数组中只能存储同一种类型的数据。
集合中可以存储不同类型的数据(一般情况下也只存相同类型的数据)。
集合结构
- 单列集合 Collection
- List可以重复:ArrayList/LinkedList
- Set不可重复:HashSet/TreeSet
- 双列集合 Map : HashMap/TreeMap
接口:粗体 实现类:斜体
1.3 - ArrayList
ArrayList<E>
原型
- ArrayList是一个List接口的实现类
- 底层就是一个可以调整大小的数组实现的
<E>
:是一种特殊的数据类型(引用数据类型) - 泛型new ArrayList<String> 或者 new ArrayList<Integer> 或者 new ArrayList<Student>
1.3.1 - ArrayList构造和添加方法
方法名 | 说明 |
---|---|
public ArrayList<E> | 创建一个空集合 |
public boolean add(E e) | 将指定的元素追加到集合的默认 |
public void add(int index ,E e) | 在集合的指定参数位置插入指定的元素 |
public void addAll(E Object) | 用于将指定集合中的元素添加到当前集合中 |
import java.util.ArrayList;
/**
* @author ly_smith
* @Description #TODO ArrayList集合的构造和添加方法
*/
public class Demo03 {
public static void main(String[] args) {
// ArrayList<String> list = new ArrayList<>();
ArrayList<String> list = new ArrayList<>();//创建空集合
//追加的方式添加元素
System.out.println(list.add("刘德华"));
System.out.println(list.add("张学友"));
System.out.println(list.add("郭富城"));
System.out.println(list.add("黎明")); //集合中的元素下标从0开始,长度减一。
//指定位置插入元素
// list.add(10,"周润发");存储空间保证连续 java.lang.IndexOutOfBoundsException
list.add(4,"周润发");
//使用索引进行插入的时候,索引的值不能大于集合中元素个数
list.add(1,"谭咏麟");
//查看集合中的元素
System.out.println("list集合中有:" + list);
//创建新集合
ArrayList<String> newList = new ArrayList<>();
newList.add("one");
newList.add("two");
newList.add("three");
newList.add("four");
System.out.println("newList集合中有:" + newList);
//将新集合添加到原集合中,追加的方式添加
// list.addAll(newList);
//将参数对象集合中所有元素添加到调用对象集合中的指定位置
list.addAll(4,newList);
System.out.println("list集合中有:" + list);
}
}
1.3.2 - ArrayList集合的常用方法
方法名 | 说明 |
---|---|
public boolean remove(Object o) | 删除指定元素 |
public E remove(int index) | 删除指定索引位置的元素,并返回被删除的元素 |
public E set(int index ,E e) | 修改指定索引位置的元素,返回被修改之前的元素 |
public E get(int index) | 获取指定索引位置的元素 |
public int size() | 获取集合中元素个数 |
import java.util.ArrayList;
import java.util.Iterator;
/**
* @author ly_smith
* @Description #TODO ArrayList集合常用方法
*/
public class Demo04 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();//创建空集合
//添加元素
list.add("东邪");
list.add("西毒");
list.add("南帝");
list.add("北丐");
list.add("中神通");
System.out.println("集合中的元素有:" + list);
//删除元素
System.out.println(list.remove("西毒"));//通过元素名称
System.out.println(list.remove(1));//通过索引位置删除元素
//修改元素
System.out.println(list.set(1,"西毒"));//通过指定索引修改元素,返回被修改之前的元素
//获取指定索引位置的元素
System.out.println(list.get(2));
System.out.println("修改后元素有:" + list);
System.out.println("集合中元素的个数:" + list.size());
//集合的遍历
//普通for循环,因为有索引
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("-------------------------------");
//增强版for循环 ,foreach
for (String name : list) {
System.out.println(name);
}
System.out.println("-------------------------------");
//迭代器
Iterator<String> it = list.iterator();//创建迭代器对象
while (it.hasNext()){//判断下一个位置是否有元素
System.out.println(it.next());//获取下一个位置的元素
}
System.out.println("-------------------------------");
//Stream流
list.stream().forEach(System.out::println);
}
}
1.3.3 - 格式化输出
/**
* @author ly_smith
* @Description #TODO 格式化输出 printf
*/
public class Demo05 {
public static void main(String[] args) {
System.out.printf("整数类型:%d\n",9527);
System.out.printf("浮点数类型:%f\n",3.14f);
System.out.printf("字符串类型:%s\n" ,"String");
System.out.printf("我的名字是%s,年龄是%d,身高是:%f\n","Andy",18,1.88f);
System.out.printf("*************%s*************\n","Hello");
System.out.printf("*************%10s*************\n","Hello");
System.out.printf("*************%-10s*************\n","Hello");
}
}