黑马程序员技术交流社区
标题: 【石家庄校区】day05学习总结 [打印本页]
作者: 段孟钊 时间: 2019-5-7 14:52
标题: 【石家庄校区】day05学习总结
本帖最后由 小石姐姐 于 2019-5-9 18:31 编辑
个人笔记一、集合体系结构 集合
Collection(单列集合) Map(双列集合)
HashMap
List(可重复数据单列集合) Set(不可重复数据单列集合)
ArrayList LinkedList HashSet TreeSet
二、Collection集合概述和使用
1.概述是单列集合的顶层接口,它表示一组对象,这些对象也称为Collection元素
JDK不提供此接口的直接实现类,它提供更具体的子接口(Set和List)
2.基本使用方法[Java] 纯文本查看 复制代码
Collection<String> c = new ArrayList<String>(); //<>不写的话,可以添加任意类型元素
c.add("aaa");//添加集合元素
三、Collection集合常用方法
[Java] 纯文本查看 复制代码
Collection<String> c = new ArrayList<String>();
c.add("aaa");//添加集合元素
c.add("bbb");
c.add("ccc");
System.out.println(c);
System.out.println(c.remove("bbb"));//删除集合中的指定元素,返回true
System.out.println(c.remove("ddd"));//删除集合中的指定元素,返回false
System.out.println(c.contains("aaa"));//判断集合中是否存在指定元素,返回true
System.out.println(c.contains("ddd");//判断集合中是否存在指定元素,返回false
System.out.println(c.isEmpty());//判断集合是否为空,有元素则返回true,否则返回false
System.out.println(c.size());//获取集合长度
c.clear();//清空集合中的所有元素
四、Collection集合的遍历
[Java] 纯文本查看 复制代码
/*
遍历Collection集合的重要步骤
1.通过集合对象获取迭代器对象
2.使用循环和hasNext()方法来控制是否还有元素
3.循环内通过next()方法获取元素
*/
//创建集合对象
Collection<String> c = new ArrayList<>();
//添加元素
c.add("aaa");
c.add("bbb");
c.add("ccc");
//通过集合对象获取迭代器对象
Iterator it = c.iterator();
//使用循环和hasNext()方法来控制是否还有元素
while(it.hasNext()){
String s = it.next();
System.out.println(s);
}
五、集合使用步骤图解六、Collection集合存储学生对象并遍历
[Java] 纯文本查看 复制代码
public class Student{
private String name;
private int age;
public Student(){}
public Student(String name, int age){
this.name = name;
this.age = age;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public String getAge(){
return age;
}
}
public class Test{
public static void main(String[] args){
//创建Collection集合对象
Collection<Student> c = new ArrayList<>();
//创建学生对象
Student s1 = new Student("张三",21);
Student s2 = new Student("李四",22);
Student s3 = new Student("王五",23);
//添加学生信息到集合里
c.add(s1);
c.add(s2);
c.add(s3);
//获取迭代器Iterator的实现类对象
Iterator<Student> it = c.iterator();
//使用迭代器遍历集合Collection
while(it.hasNext()){
Student s = it.next();
System.out.println(s.getName +", "+s.getAge);
}
}
}
七、List集合概述和特点1.List集合是单列集合体系之一
2.List集合及其实现类全部有索引
3.List集合及其实现类全部可以存储重复元素
4.List集合及其实现类全部元素存取有序
八、List集合的特有方法
[Java] 纯文本查看 复制代码
//定义List集合对象
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
//System.out.println(list.add(1,"ddd"));//添加指定索引的指定元素到集合中,返回true,输出:aaa ddd bbb ccc
//System.out.println(list.get(1));//获取指定索引对应的元素 输出:bbb
//System.out.println(list.remove(1));//删除指定索引对应的元素,并且返回该值 输出:bbb
//System.out.println(list.set(1,"ddd"));//修改指定索引的指定元素到集合中,并且返回该值 输出:bbb
System.out.println(list);
九、List集合存储学生对象并遍历
[Java] 纯文本查看 复制代码
public class Test{
public static void main(String[] args){
//定义List集合对象,多态
List<Student> list = new ArrayList<>();
//创建学生对象
Student s1 = new Student("张三",21);
Student s2 = new Student("李四",22);
Student s3 = new Student("王五",23);
//添加学生信息到集合里
list.add(s1);
list.add(s2);
list.add(s3);
//获取迭代器Iterator的实现类对象
Iterator<Student> it = list.iterator();
//使用迭代器遍历集合List
while(it.hasNext()){
Student s = it.next();
System.out.println(s.getName+", "+s.getAge);
}
//使用for循环遍历集合List
for(int i = 0; i< list.size(); i++){
Student s = list.get(i);
System.out.println(s.getName+", "+s.getAge);
}
}
}
十、并发修改异常并发修改异常出现的原因在迭代器遍历集合过程中,通过集合的自身方法对集合进行了操作。
导致了迭代器预期次数和实际次数不一致,就会出现并发修改异常
并发修改异常解决的方式可以使用普通for循环来遍历集合,再对集合进行修改
十一、列表迭代器//List集合特有的迭代器:他可以把Iterator中的并发异常给处理好
//1.通过集合对象的listiterator()方法获取一个ListIterator迭代器对象
List<String> list = new ArrayList<>();
ListIterator listIt = list.listIterator();
//2.通过调用hasNext()方法判断是否有下一个元素
listIt.hasNext();
//3.通过调用next()方法获取元素
listIt,next();
//4.可以通过ListIterator迭代器中的方法对集合进行操作
while(listIt.hasNext()){
String s = listIt.next();
System.out.println(s);
if(s.equal("aaa")){
listIt.add("bbb");
}
}
//特有功能:
hasPrevious();//从后往前判断是否还有元素,
previous();//获取从后往前的第一个元素
十二、增强for循环
[Java] 纯文本查看 复制代码
/*语法格式:
for(数据类型 变量名 : 数组或者集合引用名){
循环体;
}*/
int[] arr = {1,2,3,4,5};
for(int i : arr){
System.out.println(i);//1 2 3 4 5
}
String[] strArr = {"aaa","bbb","ccc"};
for(String s : strArr){
System.out.println(s);// aaa bbb ccc
}
List<String> list = new ArrayList<Stirng>();
list.add("111");
list.add("222");
list.add("333");
for(String s : list){
System.out.println(s);// 111 222 333
}
十三、List集合存储学生对象三种方式遍历
[Java] 纯文本查看 复制代码
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class StudentTest2 {
public static void main(String[] args) {
//创建集合对象
List<Student> list = new ArrayList<Student>();
//创建学生对象
Student s1 = new Student("张三",21);
Student s2 = new Student("李四",22);
Student s3 = new Student("王五",23);
//添加学生对象到集合里
list.add(s1);
list.add(s2);
list.add(s3);
//遍历集合输出学生信息
//方式1:Iterator迭代器遍历
Iterator<Student> it = list.iterator();
while(it.hasNext()){
Student s = it.next();
System.out.println(s);
}
System.out.println("========");
//方式2:for循环遍历
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
System.out.println(s);
}
System.out.println("========");
//方式3:增强for循环遍历
for (Student s : list){
System.out.println(s);
}
}
}
十四、数据结构之栈和队列栈的过程描述:先进后出,或者后进先出
队列的过程描述:先进先出
十五、数据结构之数组和链表数组:查找快,增删慢----ArrayList
链表:增删快,查找慢----LinkedList
十六、List集合子类的特点ArrayList集合:底层是数组实现,查询快、增删慢
LinkedList集合:底层是链表实现,查询慢、增删快
十七、ArrayList集合存储学生对象三种方式遍历
[Java] 纯文本查看 复制代码
public class ArrayListTest{
public static void main(String[] args){
//创建ArrayList对象
ArrayList<Student> array = new ArrayList<>();
//创建学生对象
Student s1 = new Student("张三",21);
Student s2 = new Student("李四",22);
Student s3 = new Student("王五",23);
//添加元素
array.add(s1);
array.add(s2);
array.add(s3);
//方式1:迭代器Iterator遍历集合
Iterator<Student> it = array.iterator();
while(it.hasNext()){
Student s = it.next();
System.out.println(s);
}
//方式2:for循环遍历集合
for(int i = 0; i< array.size();i++){
Student s = array.get(i);
System.out.println(s);
}
//方式3:增强for循环遍历集合
for(Student s : array){
System.out.println(s);
}
}
}
十八、LinkedList集合存储学生对象的三种方式遍历
[Java] 纯文本查看 复制代码
//创建LinkedList集合对象
LinkedList<Student> ll = new LinkedList<>();
//创建学生对象
Student s1 = new Student("张三",21);
Student s2 = new Student("李四",22);
Student s3 = new Student("王五",23);
//添加元素
ll.add(s1);
ll.add(s2);
ll.add(s3);
//方式1:迭代器Iterator遍历集合
Iterator<Student> it = ll.iterator();
while(it.hasNext()){
Student s = it.next();
System.out.println(s);
}
//方式2:for循环遍历集合
for(int i = 0; i< ll.size();i++){
Student s = ll.get(i);
System.out.println(s);
}
//方式3:增强for循环遍历集合
for(Student s : ll){
System.out.println(s);
}
十九、LinkedList集合的特有功能
[Java] 纯文本查看 复制代码
/*
void addFirst(E e) 向集合中第一个位置添加元素
void addLast(E e) 向集合中最后一个位置添加元素
E getFirst() 获取集合中第一个元素
E getLast() 获取集合中最后一个元素
E removeFirst() 删除集合中第一个元素
E removeLast() 删除集合中最后一个元素
*/
LinkedList<String> ll = new LinkedList<>();
ll.addFrist("aaa");// aaa
ll.addLast("ccc");// aaa ccc
ll.removeFrist();//ccc
ll.removeLast();//[]
ll.getFrist();//aaa
ll.getLast();//ccc
System.out.println(ll);//[aaa ccc]
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |