-----------------------------------day15 总结-------------------------------------------------
1:对象数组(掌握)
(1)数组既可以存储基本数据类型,也可以存储引用类型。它存储引用类型的时候的数组就叫对象数组。
(2)案例:
用数组存储5个学生对象,并遍历数组。

2:集合(Collection)(掌握)
(1)集合的由来?
我们学习的是Java – 面向对象 – 操作很多对象 – 存储 – 容器(数组和StringBuffer) – 数组
而数组的长度固定,所以不适合做变化的需求,Java就提供了集合供我们使用。
(2)集合和数组的区别?
A:长度区别
数组固定
集合可变
B:内容区别
数组可以是基本类型,也可以是引用类型
集合只能是引用类型
C:元素内容
数组只能存储同一种类型
集合可以存储不同类型(其实集合一般存储的也是同一种类型)
(3)集合的继承体系结构?
由于需求不同,Java就提供了不同的集合类。这多个集合类的数据结构不同,但是它们都是要提供存储和遍历功能的,
我们把它们的共性不断的向上提取,最终就形成了集合的继承体系结构图。

 Collection|--List|--ArrayList|--Vector|--LinkedList|--Set|--HashSet|--TreeSet
(4)Collection的功能概述(自己补齐)A:添加功能B:删除功能C:判断功能D:获取功能E:长度功能F:交集(了解)G:把集合转数组(了解)
(5)Collection集合的遍历A:把集合转数组(了解)B:迭代器(集合专用方式)
(6)迭代器A:是集合的获取元素的方式。B:是依赖于集合而存在的。C:迭代器的原理和源码。a:为什么定义为了一个接口而不是实现类?b:看了看迭代器的内部类实现。
(7)Collection集合的案例(遍历方式 迭代器)集合的操作步骤:A:创建集合对象B:创建元素对象C:把元素添加到集合D:遍历集合A:存储字符串并遍历import java.util.Collection;import java.util.ArrayList;import java.util.Iterator;public class CollectionDemo {public static void main(String[] args) {//创建集合对象Collection c = new ArrayList();//创建并添加元素c.add("hello");c.add("world");c.add("java");//遍历集合Iterator it = c.iterator();while(it.hasNext()) {String s =(String) it.next();System.out.println(s);}}}B:存储自定义对象并遍历public class Student {private String name;private int age;public Student(){}public Student(String name,int age) {this.name = name;this.age = age;}//getXxx()/setXxx()}import java.util.Collection;import java.util.ArrayList;import java.util.Iterator;public class StudentDemo {public static void main(String[] args) {//创建集合对象Collection c = new ArrayList();//创建学生对象Student s1 = new Student("林青霞",27);Student s2 = new Student("风清扬",30);Student s3 = new Student("刘意",30);Student s4 = new Student("武鑫",25);Student s5 = new Student("刘晓曲",16);//添加元素c.add(s1);c.add(s2);c.add(s3);c.add(s4);c.add(s5);//遍历集合Iterator it = c.iterator();while(it.hasNext()) {Student s = (Student)it.next();System.out.println(s.getName()+"---"+s.getAge());}}}

3:集合(List)(掌握)
(1)List是Collection的子接口
特点:有序(存储顺序和取出顺序一致),可重复。
(2)List的特有功能:(自己补齐)
A:添加功能
B:删除功能
C:获取功能
D:迭代器功能
E:修改功能
(3)List集合的特有遍历功能
A:由size()和get()结合。
B:代码演示
//创建集合对象
List list = new ArrayList();

             //创建并添加元素list.add("hello");list.add("world");list.add("java");//遍历集合Iterator it = list.iterator();while(it.hasNext()) {String s =(String) it.next();System.out.println(s);}System.out.println("----------");for(int x=0; x<list.size(); x++) {String s =(String) list.get(x);System.out.println(s);}
(4)列表迭代器的特有功能;(了解)可以逆向遍历,但是要先正向遍历,所以无意义,基本不使用。
(5)并发修改异常A:出现的现象迭代器遍历集合,集合修改集合元素B:原因迭代器是依赖于集合的,而集合的改变迭代器并不知道。C:解决方案a:迭代器遍历,迭代器修改(ListIterator)元素添加在刚才迭代的位置b:集合遍历,集合修改(size()和get())元素添加在集合的末尾
(6)常见数据结构A:栈 先进后出B:队列 先进先出C:数组 查询快,增删慢D:链表 查询慢,增删快
(7)List的子类特点(面试题)ArrayList底层数据结构是数组,查询快,增删慢。线程不安全,效率高。Vector底层数据结构是数组,查询快,增删慢。线程安全,效率低。LinkedList底层数据结构是链表,查询慢,增删快。线程不安全,效率高。到底使用谁呢?看需求?分析:要安全吗?要:Vector(即使要,也不使用这个,后面再说)不要:ArrayList或者LinkedList查询多;ArrayList增删多:LinkedList什么都不知道,就用ArrayList。
(8)List集合的案例(遍历方式 迭代器和普通for)A:存储字符串并遍历B:存储自定义对象并遍历

package cn.itcast_01;

import java.util.ArrayList;
import java.util.Collection;

/*

  • 集合的由来:

  •  面向对象语言对事物的体现都是以对象的形式,
    
  •  所以为了方便对多个对象的操作,Java就提供了集合类。
    
  • 集合和数组的区别:

  •  长度不同:数组的长度固定,集合的长度可以变化
    
  •  内容不同:数组只能存同一种数据类型元素,集合可以存储不同类型元素
    
  •  元素的数据类型不同:
    
  •          数组:可以存储基本类型数据,也可以存储引用类型数据
    
  •          集合:只可以存储引用类型数据
    
  • java提高了不同的集合类,不同集合类的数据结构不同

  • 数据结构:数据的存储方式

  • Collection:是集合类的顶层接口,他的子体系有重复的,有唯一的,有有序对的,有无序的。

  • Collection的功能概述:

  •  1.添加功能
    
  •      boolean add(Object obj):添加一个元素
    
  •      boolean addAll(Collection c):添加一个集合的元素
    
  •  2.删除功能
    
  •      void clear()移除此 collection 中的所有元素(可选操作)。
    
  •      boolean remove(Object o) 移除一个元素
    
  •      boolean removeAll(Collection<?> c) 移除一个集合的元素
    
  •  3.判断功能
    
  •      boolean contains(Object o)如果此 collection 包含指定的元素,则返回 true
    
  •      boolean containsAll(Collection<?> c)如果此 collection 包含指定 collection 中的所有元素,则返回 true
    
  •      boolean isEmpty() 如果此 collection 不包含元素,则返回 true。
    
  •  4.获取功能
    
  •      Iterator<E> iterator()
    
  •  5.长度功能
    
  •      int size() 返回此 collection 中的元素数。
    
  •  6.交集功能
    
  •      boolean retainAll(Collection c) 保留两个集合都有的元素
    
  •  7.把集合转换为数组:
    
  •      Object [] toArray() 返回包含此 collection 中所有元素的数组。
    
  •  面试题:数组有没有length()方法,字符串有没有length()方法,集合有没有length()方法
    
  •           没有                                          有                                                      没有
    
  • */
    public class CollectionDemo {
    public static void main(String[] args) {
    // 测试不带All的方法

     // 创建集合对象// Collection c = new Collection();  错误:接口不能实例化// 通过子接口实现类来调用方法Collection c = new ArrayList();System.out.println("c:"+c);// boolean add(Object obj):添加一个元素//System.out.println("add:"+c.add("hello"));c.add("hello");c.add("world");c.add("java");System.out.println("c:"+c);// void clear()移除此 collection 中的所有元素(可选操作)。    //c.clear();//System.out.println("c:"+c);// boolean remove(Object o) 移除一个元素c.remove("hello");System.out.println("remove:"+c);// boolean contains(Object o)如果此 collection 包含指定的元素,则返回 trueSystem.out.println(c.contains("hello"));// boolean isEmpty() 如果此 collection 不包含元素,则返回 true。System.out.println("isEmpty():"+c.isEmpty());
    

    }
    }
    -----------------------------------知识点1-------------------------------------------------
    package cn.itcast_01;

import java.util.ArrayList;
import java.util.Collection;

/*

  • boolean addAll(Collection c) :添加一个集合的元素
    boolean removeAll(Collection c):移除一个集合的元素
    boolean containsAll(Collection c):判断集合是否包含指定的集合元素(是一个还是所有)
    boolean retainAll(Collection c):两个集合都有的元素?思考元素去哪里了,返回boolean。

  • */
    public class CollectionDemo2 {
    public static void main(String[] args) {
    // 创建集合1
    Collection c1 = new ArrayList();
    c1.add(“abc1”);
    c1.add(“abc2”);
    c1.add(“abc3”);
    c1.add(“abc4”);

     // 创建集合2Collection c2 = new ArrayList();c2.add("abc1");c2.add("abc2");c2.add("abc3");c2.add("abc4");// boolean addAll(Collection c) :添加一个集合的元素//c1.addAll(c2);//boolean removeAll(Collection c):移除一个集合的元素// 只要一个元素被移除,就返回true// System.out.println("removeAll:"+c1.removeAll(c2));// boolean containsAll(Collection c):判断集合是否包含指定的集合元素(是一个还是所有)// 包含所有才叫包含// System.out.println("containsAll:"+c1.containsAll(c2)); // false// boolean retainAll(Collection c):保留两个集合都有的元素// 如果调用的对象中的内容发生变化,则返回true,如果未发生变化则返回false。System.out.println("retainAll:"+c1.retainAll(c2));System.out.println("c1:"+c1);System.out.println("c2"+ c2);
    

    }
    }
    -----------------------------------知识点2-------------------------------------------------
    package cn.itcast_01;

import java.util.ArrayList;
import java.util.Collection;

/*

  • Object[] toArray()
    把集合转成数组,可以实现集合的遍历

  • */
    public class CollectionDemo3 {
    public static void main(String[] args) {
    // 创建集合对象
    Collection c = new ArrayList();

     // 添加对象c.add("hello");c.add("world");c.add("java");// 把集合转成数组,实现集合的遍历Object [] arr = c.toArray();// 输出数组for(int x=0;x<arr.length;x++){System.out.println(arr[x]);// 需求:获取每个字符串的长度// System.out.println(arr[x]+"-----"+arr[x].length());// 上述方法行不通,因为Object类没有length()方法。// 需要把元素还原成字符串String s = (String) arr[x]; // 向下转型System.out.println(s+"-----"+s.length());}
    

    }
    }
    -----------------------------------知识点3-------------------------------------------------
    package cn.itcast_02;

import java.util.ArrayList;
import java.util.Collection;

/*

  • 练习:用集合存储5个学生对象,并把学生对象进行遍历

  • 分析:

  •  1.创建学生类
    
  •  2.创建5个学生对象
    
  •  3.创建集合类
    
  •  4.将对象放入集合
    
  •  5.遍历集合
    
  • */
    public class StudentDemo {
    public static void main(String[] args) {
    // 创建学生对象
    Student s1 = new Student(“林青霞”,23);
    Student s2 = new Student(“刘亦菲”,26);
    Student s3 = new Student(“周杰伦”,32);
    Student s4 = new Student(“蔡徐坤”,20);
    Student s5 = new Student(“马云”,50);

     // 创建集合类Collection c = new ArrayList();// 添加学生对象c.add(s1);c.add(s2);c.add(s3);c.add(s4);c.add(s4);// 遍历集合Object []  obj = c.toArray();for(int x=0;x<obj.length;x++){System.out.println(obj[x]);System.out.println("姓名:"+((Student)obj[x]).getName()+" 年龄:"+((Student)(obj[x])).getAge());}
    

    }
    }
    -----------------------------------知识点4-------------------------------------------------
    package cn.itcast_03;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*

  • Iterator iterator()
    迭代器,集合的专用遍历方式
    next() 获取一个元素,并且移动到下一个元素位置
    注意:错误 NoSuchElementException 没有这样的元素,已经到最后了

  • */
    public class IteratorDemo {
    public static void main(String[] args) {
    // 创建对象
    Collection c = new ArrayList();

     c.add("hello");c.add("world");c.add("java");// Iterator iterator()Iterator it = c.iterator(); // 返回的是子类实现对象
    

// Object obj = it.next();
// System.out.println(obj);
//
// obj = it.next();
// System.out.println(obj);
//
// obj = it.next();
// System.out.println(obj);

 while(it.hasNext()){// Object obj = it.next();// System.out.println(obj);String s = (String)it.next();System.out.println(s);}
}

}
-----------------------------------知识点5-------------------------------------------------
package cn.itcast_03;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*

  • 练习:用集合存储5个学生对象,并把学生对象进行遍历。用迭代器遍历

  • 注意问题:

  •  1.自己的类名不要和我们学习的API中的类名相同。
    
  •  2.复制代码的时候,很容易把那个类的包导进来。
    
  •  3.不要多次使用it.next()
    
  • */
    public class IteratorTest {
    public static void main(String[] args) {
    // 创建学生对象
    Student s1 = new Student(“林青霞”,23);
    Student s2 = new Student(“刘亦菲”,26);
    Student s3 = new Student(“周杰伦”,32);
    Student s4 = new Student(“蔡徐坤”,20);
    Student s5 = new Student(“马云”,50);

     // 创建集合类Collection c = new ArrayList();// 添加学生对象c.add(s1);c.add(s2);c.add(s3);c.add(s4);c.add(s5);// 用迭代器遍历Iterator it = c.iterator();while(it.hasNext()){Student s = (Student)it.next(); System.out.println("姓名:"+s.getName()+" 年龄: "+s.getAge());//System.out.println(it.next());// 错误:NoSuchElementException 不要多次使用it.next();// System.out.println("姓名:"+((Student)(it.next())).getName()//               +" 年龄:"+((Student)(it.next())).getAge());}
    

    }
    }
    -----------------------------------知识点6-------------------------------------------------
    package cn.itcast_03;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*

  • */
    public class IteratorTest2 {
    public static void main(String[] args) {
    // 创建学生对象
    Student s1 = new Student(“林青霞”,23);
    Student s2 = new Student(“刘亦菲”,26);
    Student s3 = new Student(“周杰伦”,32);
    Student s4 = new Student(“蔡徐坤”,20);
    Student s5 = new Student(“马云”,50);

     // 创建集合类Collection c = new ArrayList();// 添加学生对象c.add(s1);c.add(s2);c.add(s3);c.add(s4);c.add(s5);// 用迭代器遍历Iterator it = c.iterator();while(it.hasNext()){Student s = (Student)it.next(); System.out.println("姓名:"+s.getName()+" 年龄: "+s.getAge());//System.out.println(it.next());}System.out.println("----------------------");// for循环改进
    

// for(Iterator it1 = c.iterator();it1.hasNext()?{
// Student s = (Student)it1.next();
// System.out.println(“姓名:”+s.getName()+" 年龄: "+s.getAge());
//
// }

}

}
-----------------------------------知识点7-------------------------------------------------
/

  • Iterator接口的原理讲解
    为什么不定义成一个类,而是一个接口
    看源码是如何实现的

/

public interface Iterator{
public abstract Object next();
public abstract boolean hasNext();

}

public interface Iterable{
/**
* Returns an iterator over elements of type {@code T}.
*
* @return an Iterator.
*/
Iterator iterator();
}

public interface Collection extends Iterable{
Iterator iterator;
}

public interface class List extends Collection{
Iterator iterator();
}

public class ArrayList implements List{
public Iterator iterator() {
return new Itr();
}

private class Itr implements Iterator<E> {public boolean hasNext() {}public E next() {}
}

}

---------------------代码解析-------------------
// 创建集合类
Collection c = new ArrayList();

 // 添加学生对象c.add(s1);c.add(s2);c.add(s3);c.add(s4);c.add(s5);// 用迭代器遍历Iterator it = c.iterator(); // new Itrwhile(it.hasNext()){Student s = (Student)it.next(); System.out.println("姓名:"+s.getName()+" 年龄: "+s.getAge());//System.out.println(it.next());}

-----------------------------------知识点8-------------------------------------------------
package cn.itcast_04;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*

  • 需求:存储字符串,并且遍历字符串

  • */
    public class CollectionTest {
    public static void main(String[] args) {
    // 创建集合类对象
    Collection c = new ArrayList();

     // 创建字符串String s1 = "蔡徐坤";String s2 = "周杰伦";String s3 = "卢本伟";String s4 = "刘亦菲";String s5 = "孙悟空";// 将字符串元素添加到集合中c.add(s1);c.add(s2);c.add(s3);c.add(s4);c.add(s5);// 遍历集合// 创建迭代器对象Iterator it = c.iterator();// 遍历集合// 通过Iterator类的hasNext方法判断while(it.hasNext()){String s = (String)it.next();System.out.println(s);}
    

    }
    }
    -----------------------------------知识点9-------------------------------------------------
    package cn.itcast_04;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*

  • 需求:存储自定义对象并遍历Student(name,age)

  • 分析:

  •  1.创建学生类
    
  •  2.创建集合对象
    
  •  3.创建学生对象
    
  •  4.将学生类添加到集合
    
  •  5.遍历集合
    
  • */
    public class CollectionTest2 {
    public static void main(String[] args) {
    // 创建集合类对象
    Collection c = new ArrayList();

     // 创建集合对象Student s1 = new Student("刘备",20);Student s2 = new Student("诸葛亮",30);Student s3 = new Student("貂蝉",23);Student s4 = new Student("大乔",26);Student s5 = new Student("小乔",22);// 将学生类添加到集合中c.add(s1);c.add(s2);c.add(s3);c.add(s4);c.add(s5);// 遍历数组// 通过集合对象,创建迭代器对象Iterator it = c.iterator();while(it.hasNext()){Student s = (Student)it.next();System.out.println("姓名:"+s.getName()+" 年龄:"+s.getAge());}
    

    }
    }
    -----------------------------------知识点10-------------------------------------------------
    package cn.itcast_01;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/*

  • 需求:List集合存储字符串并遍历

  • */
    public class ListDemo {
    public static void main(String[] args) {
    // 创建集合对象
    List list = new ArrayList();

     // 创建字符串对象String s1 = "蔡徐坤";String s2 = "周杰伦";String s3 = "王力宏";String s4 = "张飞";String s5 = "关羽";String s6 = "刘备";// 将字符串加入到集合元素中list.add(s1);list.add(s2);list.add(s3);list.add(s4);list.add(s5);list.add(s6);// 通过集合对象创建迭代器对象Iterator it = list.iterator();// 遍历集合while(it.hasNext()){String s = (String)it.next();System.out.println(s);}
    

    }
    }
    -----------------------------------知识点11-------------------------------------------------
    package cn.itcast_01;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/*

  • List集合的特点:

  •  有序(存储和去除的元素一致),可重复。
    
  • */
    public class ListDemo2 {
    public static void main(String[] args) {
    // 创建集合对象
    List list = new ArrayList();

     // 存储元素list.add("hello");list.add("world");list.add("java");list.add("javaee");list.add("android");// 遍历集合Iterator it = list.iterator();while(it.hasNext()){String s = (String)it.next();System.out.println(s);}
    

    }
    }
    -----------------------------------知识点12-------------------------------------------------
    package cn.itcast_02;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListDemo {
public static void main(String[] args) {
// 创建集合对象
List list = new ArrayList();

 // 创建学生类对象Student s1 = new Student("唐僧",12);Student s2 = new Student("孙悟空",600);Student s3 = new Student("猪八戒",543);Student s4 = new Student("沙僧",323);Student s5 = new Student("白龙马",342);// 将学生类对象元素添加到集合list.add(s1);list.add(s2);list.add(s3);list.add(s4);list.add(s5);// 创建迭代器对象Iterator it = list.iterator();// 遍历集合while(it.hasNext()){Student s = (Student)it.next();System.out.println("姓名:"+s.getName()+" 年龄:"+s.getAge());}}

}
-----------------------------------知识点13-------------------------------------------------
package cn.itcast_03;

import java.util.ArrayList;
import java.util.List;

/*

  • List集合的特有功能:

  • 添加功能:

  •  void add(int indexd,Object element)
    
  • 获取功能:

  •  object get(int index):获取指定位置的元素
    
  • 列表迭代器:

  •  ListIterator<E> listIterator():List集合的特有迭代器
    
  • 删除功能:

  •  Object remove (int index):根据索引删除元素,返回被删除的元素
    
  • 修改功能:

  •  Object set(int index,Object element):根据索引修改元素,返回被修改的元素
    
  • */
    public class ListDemo {
    public static void main(String[] args) {
    // 创建集合对象
    List list = new ArrayList();

     // 添加元素list.add("hello");list.add("world");list.add("java");// void add(int index,Object element):在指定位置添加元素//list.add(1,"android");// IndexOutOfBoundsException 索引越界//list.add(4,"javaee"); 有问题list.add(3,"javaee"); // 正确// 获取功能:    object get(int index):获取指定位置的元素System.out.println("list:"+list.get(1)); // 删除功能:Object remove (int index):根据索引删除元素,返回被删除的元素System.out.println("remove:"+list.remove(0));// 修改功能:Object set(int index,Object element):根据索引修改元素,返回被修改的元素System.out.println("set:"+list.set(0, "123"));System.out.println(list);
    

    }
    }
    -----------------------------------知识点14-------------------------------------------------
    package cn.itcast_03;

import java.util.ArrayList;
import java.util.List;

/*
*

  • List集合的特有遍历功能:

  •  size()和get()方法结合使用
    
  • */
    public class ListDemo2 {
    public static void main(String[] args) {
    // 创建集合对象
    List list = new ArrayList();

     // 添加元素list.add("hello");list.add("world");list.add("java");// 获取指定位置的元素
    //System.out.println(list.get(0));
    //System.out.println(list.get(1));
    //System.out.println(list.get(2));System.out.println(list.size());// size()方法和get()方法的结合for(int x=0;x<list.size();x++){System.out.println(list.get(x));}
    

    }
    }
    -----------------------------------知识点15-------------------------------------------------
    package cn.itcast_03;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import cn.itcast_02.Student;

/*

  • 存储自定义对象并遍历,用普通for循环。size()和get()方法的结合

  • */
    public class ListDemo3 {
    public static void main(String[] args) {
    // 创建集合对象
    List list = new ArrayList();

     // 创建学生类对象Student s1 = new Student("唐僧",12);Student s2 = new Student("孙悟空",600);Student s3 = new Student("猪八戒",543);Student s4 = new Student("沙僧",323);Student s5 = new Student("白龙马",342);// 将学生类对象元素添加到集合list.add(s1);list.add(s2);list.add(s3);list.add(s4);list.add(s5);// 创建迭代器对象Iterator it = list.iterator();// 遍历集合while(it.hasNext()){Student s = (Student)it.next();System.out.println("姓名:"+s.getName()+" 年龄:"+s.getAge());}System.out.println("---------------------");     // 用普通for循环。size()和get()方法的结合for(int x=0;x<list.size();x++){Student s = (Student)list.get(x);System.out.println("姓名:"+s.getName()+" 年龄:"+s.getAge());}
    

    }
    }
    -----------------------------------知识点16-------------------------------------------------
    package cn.itcast_04;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/*

  • 列表迭代器:ListIterator

  • 该迭代器继承了Iterator迭代器,所以,就可以直接使用hasNext()和next()方法

  • 特有功能:

  •  Object previous() 返回列表中的前一个元素。
    
  •  注意:可以进行逆向遍历,但是要逆向遍历必须先正向遍历,一般不使用。
    
  • */
    public class ListIteratorDemo {
    public static void main(String[] args) {
    // 创建集合类对象
    List list = new ArrayList();

     // 创建字符串对象String s1 = "蔡徐坤";String s2 = "周杰伦";String s3 = "hello world";// 将对象添加到集合list.add(s1);list.add(s2);list.add(s3);// ListIterator :列表迭代器ListIterator lit = list.listIterator();while(lit.hasNext()){String s = (String)lit.next();System.out.println(s);}System.out.println("---------------------");
    

// System.out.println(lit.previous());
// System.out.println(lit.previous());
// System.out.println(lit.previous());

 // 逆向打印while(lit.hasPrevious()){System.out.println(lit.previous());}System.out.println("---------------------");// 迭代器Iterator it = list.iterator();while(it.hasNext()){String s = (String)it.next();System.out.println(s);}System.out.println("---------------------");
}

}
-----------------------------------知识点17-------------------------------------------------
package cn.itcast_04;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/*

  • 需求:

  •  在一个集合中,判断里面有没有"world"这个元素。如果有,我就添加一个
    
  •  "javaee"元素,请写代码实现。
    
  •  注意:错误:ConcurrentModificationException
    
  •          当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
    
  •     产生的原因:迭代器是依赖于集合存在的,在判断成功后,集合添加了元素,
    
  •               而迭代器却不知道,所以就报错了,这个错叫做并发修改异常。
    
  •     解决方法:
    
  •              1.使用迭代器修改元素
    
  •                  元素是跟在刚才比较的字符串后面
    
  •             2.使用集合遍历
    
  •                  元素在最后
    
  • */
    public class LiteratorListDemo {
    public static void main(String[] args) {
    // 创建集合类对象
    List list = new ArrayList();

     // 创建字符串对象String s1 = "hello";String s2 = "java";String s3 = "world";// 将字符串对象添加到集合类对象list.add(s1);list.add(s2);list.add(s3);// 创建迭代器对象Iterator it = list.iterator();// 遍历查找集合// 错误:ConcurrentModificationException 当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。// while(it.hasNext()){// String s = (String)it.next();// if("world".equals(s)){// list.add("javaee");// }// 修改方法1 使用迭代器修改元素,iterator没有add功能ListIterator lit = list.listIterator();while(lit.hasNext()){String s = (String)lit.next();if("java".equals(s)){lit.add("javaee");}}System.out.println(list);System.out.println("----------------------------");// 修改方法2 使用for循环遍历for(int x =0;x<list.size();x++){String s = (String)list.get(x);if("world".equals(s)){list.add("javaee");System.out.println(list);break;}}
    

    }
    }
    -----------------------------------知识点18-------------------------------------------------
    List:(面试题List的子类特点):

    ArrayList:
    底层数据结构是数组,查询快,增删慢
    线程不安全,效率高

    Vector:
    地城数据结构是数组,查询快,增删慢
    线程安全,效率低

    LinkedList:
    底层数据结构是链表,查询慢,增删快
    线程不安全,效率高
    -----------------------------------知识点19-------------------------------------------------
    package cn.itcast_01;
    /*

  • 请完成下面的代码:(思考题)
    我有5个学生,请把这个5个学生的信息存储到数组中,并遍历数组,获取得到每一个学生信息。

    学生:Student
    成员变量:name,age
    构造方法:无参,带参
    成员方法:getXxx()/setXxx()

    分析:
    1.创建学生类
    2.创建学生类数组
    3.创建5个学生类对象
    4.将5个学生类对象放进数组
    5.遍历数组

  • */
    public class ObjectArrayDemo {
    public static void main(String[] args) {
    // 创建学生数组(对象数组)。
    Student [] students = new Student[5];

     // 创建学生类对象Student s1 = new Student("林青霞",20);Student s2 = new Student("赵雅芝",60);Student s3 = new Student("刘亦菲",25);Student s4 = new Student("王力宏",34);Student s5 = new Student("蔡徐坤",23);//System.out.println(s1);// 将学生对象放进学生数组students [0] = s1;students [1] = s2;students [2] = s3;students [3] = s4;students [4] = s5;// 遍历数组for(int x=0;x<students.length;x++){System.out.println("姓名:"+students[x].getName()+"年龄:"+students[x].getAge());}
    

    }
    }

day15 java基础(Collection类,List类,Object类)相关推荐

  1. Java基础知识强化26:Object类之hashCode()方法、getClass()方法

    1. Object类的hashCode()方法,如下: public  int  hashCode():返回该对象的哈希码值,这个值和地址值有关,但是不是实际地址值(哈希码值是根据实际地址值转化过来的 ...

  2. java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...

    0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...

  3. Java核心技术第五章——2.Object类

    Object类:所有类的超类 Object类是Java中所有类的始祖,在Java中每个类都是由它扩展而来的.但是并不需要这样写: public class Emloyee extends Object ...

  4. Java基础语法(九)——String类

    文章目录 Java基础语法(九)--String类 一.定义方式 二.内存 三.字符串比较相等 四.字符串常量池 (1) 直接赋值 (2)采用构造方法 (3)intern 的使用 五.理解字符串不可变 ...

  5. java中所有类的父类Object类介绍

    知识点-- Object类概述 目标: 了解Object的概述和常用方法 路径: Object类的概述 Object类中常用的2个方法 讲解: Object类的概述 java.lang.Object类 ...

  6. Java基础自学第一期——继承与类

    Java自学心得第一期 本人大二计算机专业,想在寒假期间把java学过的知识给总结一下,边学习边总结总是好的.希望各位朋友大牛看过之后可以给出意见,欢迎大家一起讨论交流,一起进步.文章内容可参考< ...

  7. Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型...

    任何类都是object类的子类 用object对象接收数组 object类的向上向下转型 转载于:https://www.cnblogs.com/qingyundian/p/7744351.html

  8. JAVA day13,14 API、Object类、日期时间类(long,Date,Calendar,DateFormat)、String类(字符串,可变长字符串)、正则表达式、包装类

    1.API API(Application Programming Interface),应⽤程序编程接⼝.Java API是⼀本程序员的"字 典",是JDK提供给我们使⽤的类的说 ...

  9. Java基础知识强化83:System类之gc()方法(垃圾回收)以及和finalize()区别

    1. System概述: System类包含一些有用的类字段和方法.它不能被实例化. 2. gc()方法:垃圾回收器 1 public static void gc()       调用gc方法暗示着 ...

最新文章

  1. Linux(9)用户、组和权限管理
  2. 怎么改mnist数据的标签_【Pytorch】多个数据集联合读取
  3. redis批量操作及性能分析
  4. 疾风之刃的最新服务器,《疾风之刃》服务器数据互通(合服)提前预览
  5. MTK Project Clone
  6. mysql报错:Deadlock found when trying to get lock;
  7. 发货100全功能网站/绿色版
  8. fw150um2.0linux驱动下载,fw150um无线网卡驱动
  9. Java 条形码 二维码 的生成与解析
  10. oracle 存储过程 示例
  11. 快速查找文件的神器Listary
  12. 单片机软件反破解 Hex反破解 破解后的hex不能量产
  13. 网页flash加载不出来
  14. C# Winform设置焦点
  15. C语言基础学习——基本数据类型(Int型)
  16. 第五章:3ds max UV展开和BP贴图绘制(上)
  17. [附源码]java毕业设计海雨市高校实验设备报修系统
  18. 贤者之路, Caffe转TensorRT
  19. eclipse调试错误No source available for _dl_debug_state() 解决方案
  20. html实现自动清理js、css文件的缓存

热门文章

  1. 教你怎么解决搭建openstack环境问题
  2. 基于python爬虫天气象大数据可视化分析系统
  3. Samsung四核(ARM Cortex-A9)UT-Exynos4412开发板
  4. vue 封装js常用工具函数包
  5. SitePoint首席执行官为慈善事业走了100公里
  6. 如何修改容器启动命令
  7. java不可以修改的修饰语_【填空题】在java程序中,用关键字___修饰的常量对象创建后就不能再修改了。...
  8. 《C#妹妹和Objective-C阿姨对话录》(04)垃圾回收基础--拆迁队那点事
  9. 深圳职业学院计算机网络技术,深圳信息职业技术学院2020年自主招生计算机信息管理、计算机网络技术考试大纲(面向中职)...
  10. elasticsearch matchPhraseQuery zeroTermsQuery异常