集合基础
如果存储的数据,长度经常发生改变,推荐使用集合.
集合和数组的区别:
共同点 都是存储数据的容器
不同点 数组容量是固定的,集合的容量可以发生改变
ArrayList集合
构造方法摘要
public ArrayList()创建一个空参
public boolean add(E e)将指定的元素加到此集合的末尾
public void add(int index,E element)在此集合中的指定位置插入指定的元素
ArrayList<E>
指定泛型
<>中是引用数据类型
//泛型只能指定引用数据类型
//如果想要存储整数,指定类型指定为基本数据类型的包装类(基本数据类型转成的引用数据类型)
//int的包装类型是integer
//集合只能存储引用数据类型数据,不能存储基本数据类型
//基本数据类型包装类
byte:Byte
short:Short
char:Character
int:Integer
long:Long
float:Float
double:Double
char:Character
boolean:Boolean
*/
集合基础,遍历集合通用格式
for(int i=0;i<集合对象.size();i++){
集合对象.get(i)就是指定索引处的元素
}
for(int i=0;i<数组.lenggth;i++){
数组名[索引];
}
ArrayList集合常用方法(增删改查)
public boolean remove(Object o)删除指定的元素,返回删除是否成功
public E remover(int index) 删除指定索引处的元素,返回被删除的元素
public E set(int index,E element)修改指定索引处的元素,返回被修改的元素
public E get(int index)返回指定索引处的元素
public int size()返回集合中的元素的个数
存储字符串并遍历
1创建集合对象
2往集合中添加字符串对象
3遍历集合获取每一个元素
4遍历集合获取集合长度
5通过遍历的集合获取集合的格式
存储学生对象并遍历
1定义学生类
2创建集合对象
3创建学生对象
4将学生导入对象
5遍历查找
//
1创建集合对象
2创建学生对象
3封装信息到学生对象中
4使用集合对象,调用add方法
5遍历集合
如果需要泛型创建一个类的对象,在定义类的时候类名后面要加<E>,如何字母都可以,习惯用E
定义类时,类名后面的<E>,专业说法是泛型,用来代表一种不确定的特性
集合和数组都是容器.
集合的特点:1集合大小不固定.只能是引用类型
数组:长度固定,可以是基本类型也可以是引用类型
集合类体系结构
单列Collection//根接口,规定了所有的单例集合都必须是有的通用方法
分List ArrayList/LinkedList
Set HashSet(LinkedHashSet )/TreeSet
双列Map
分HashSet LinkedHashSet
TreeSet
public boolean add(E e) 把给定的对象添加到当前集合中
public void clear() 清空集合中所有的元素
public boolean remove(E e) 把给定的对象在当前集合中删除
public boolean contains(Object obj) 判断当前集合中是否包含给定的对象
public boolean isEmpty() 判断当前集合是否为空
public int size() 返回集合中元素的个数。
public Object[] toArray() 把集合中的元素,存储到数组中
List系列集合:添加的是有序,可重复,有索引
Set系列集合:添加的元素是无序,不重复,无索引
HashSet无序,不重复,无索引
LinkedHashSet有序,不重复,无索引
TreeSet按照大小默认升序排序,不重复,无索引.
迭代器遍历概叙
迭代器是集合的专用遍历方式.
Iterator<E>iterator() 返回集合中迭代器对象
默认指向当前集合索引0的位置
迭代器元素越界会
出现NOSuchElementException异常
增强for可以遍历哪些容器?
既可以遍历集合也可以遍历数组。
增强for的关键是记住它的遍历格式
for(元素数据类型 变量名 : 数组或者Collection集合) {
//在此处使用变量即可,该变量就是元素
}
增强for本质上就是迭代器的简化写法
JDK8 foreach方法遍历集合
集合中存储的是元素的地址信息
Iterator<String>it=list.iterator();迭代器遍历
For(String s.list)增强for遍历
可变参数格式
方法名(数据类型...变量名)
本质:本质上是一个数组,在方法中当数组来用即可.
可变参数注意事项
如果有多个参数,可变参数写在最后一个.
Collections集合工具类
不属于集合,是用来操作工具的
public static <T> boolean addAll(Collection<? super T> c, T... elements)
*把多个元素添加到参数的集合中去
* public static void shuffle(List<?> list)
* 把List集合中元素打乱
* public static <T> void sort(List<T> list)
* 对List集合中元素进行排序
* public static <T> void sort(List<T> list,Comparator<? super T> c)
*对于List集合中的元素按照自定义比较器排序
* 注意:以上方法都是static修饰的,静态方法直接用类名调用即可
Collections.addAll(list,"abc","dvd");
添加多个元素
Collections.shuffle(list)
把list集合中元素打乱