Day16 --今天学习效率较低

今日学习时间4个小时,晚上出去玩,明天图书馆只有早上开门,明天得早起去图书馆学习。今天学习效率不太行。

 

Day16

 

iterator

/**
* iterator就是个迭代器,不装东西的。
* 集合对象每次调用iterator()方法都得到一个全新的迭代器对象。
* 默认游标都在集合的第一个元素之前。
* 9.iterator();返回Iterator接口的实例,用于遍历集合元素,放在IteratorTest.java中。
* 集合元素的遍历操作,使用迭代器Iterator接口
* 迭代器模式就是为容器而生。
* 内部的方法,hasNext()和next()方法
* hasNext()判断是否还有下一个元素
* next()①指针下移,②将下移以后的集合位置的元素返回。
*/
while (iterator.hasNext()){
  System.out.println(iterator.next());

 

foreach循环

/**
* foreach循环,用于遍历集合、数组
*/
public class forEachTest {

  @Test
  public void test(){
      Collection coll =new ArrayList();
      coll.add(123);
      coll.add(456);
      coll.add(new Person("Jerry",20));
      coll.add("tom");
      coll.add(false);
      System.out.println(coll);
      //for(集合中元素类型   局部变量 :集合对象)

      for(Object obj: coll){
          System.out.println(obj);
      }
  }

  @Test
  public void test1(){
      //for(数组中元素类型   局部变量 :数组)
      int[] arr =new int[]{1,2,3,4,5,6,7};
      for(int i:arr){
          System.out.println(i);
      }
  }
  @Test
  public void test2(){
      String[] arr =new String[]{"mm","MM","妹妹"};
//       //普通for赋值
//       for (int i =0;i<arr.length;i++){
//           arr[i] ="哥哥";//改变了原有数组。
//       }
      //增强for循环。
      for (String s:arr){
          s ="QQ";//重新赋值了s,没有改变原有数组
      }
      for (int i = 0; i < arr.length; i++) {
          System.out.println(arr[i]);
      }
  }
}

 

 

今日份代码:

package com.sorrymaker.CollectionTest;

import org.junit.Test;

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

/**
* -Collection接口:单列集合,用来存储一个一个的对象   I
* ---List接口:存储有序的、可重复的数据----->动态数组,替换原有打的数组
* ------ArrayList、作为List接口的主要实现类,线程不安全,效率高,底层使用Object[] elementData存储
* ------LinkedList、对于频繁的插入、删除操作,使用此类效率比ArrayList高,底层使用双向链表存储
* ------Vector:作为List接口的古老实现类,线程安全,效率低,底层使用Object[] elementData存储
*
* LinkedList、ArrayList、Vector三者的异同
* ---同:三个类都是实现了List接口,存储数据的特点相同:存储有序的、可重复的数据。
*
* 小结:Jdk7中的ArrayList的对象的创建类似于单例的饿汉式,
* JDK8中的ArrayList的对象创建类似于单例的懒汉式,延迟了数组的创建,节省内存。
*
* LinkedList源码分析:
* LinkedList list = new LinkedList();实例化,内部声明了Node类型的first和last属性,默认值为null。
* link.add(123);将123封装到Node中,创建了Node对象
* 其中 Node定义为:
*     private static class Node<E> {
*         E item;//中
*         Node<E> next;//后
*         Node<E> prev;//前
*         //双向链条。
*         Node(Node<E> prev, E element, Node<E> next) {
*             this.item = element;
*             this.next = next;
*             this.prev = prev;
*         }
*     }
*/
public class ListTest {
  /**
    * List接口的常用方法
    *
    * 总结:常用方法
    * 增:add(Object obj)
    * 删: remove(int index)/remove(Object obj)
    * 改: set(int index, Object ele)
    * 查: get(int index)
    * 插: add(int index, Object ele)
    * 长度:size()
    * 遍历: Iterator 迭代器方式
    *     增强for循环
    *     普通的循环
    */
  @Test
  public void test2(){
      ArrayList list = new ArrayList();
      list.add(123);
      list.add(456);
      list.add("Aa");
      //方式一,使用迭代器Iterator遍历
      Iterator iterator =list.iterator();
      while(iterator.hasNext()){
          System.out.println(iterator.next());
      }
      //方式二:增强for循环
      for(Object obj:list){
          System.out.println(obj);
      }
      //方式三:普通for循环
      for (int i =0;i<list.size();i++){
          System.out.println(list.get(i));
      }
  }


  @Test
  public void test(){
      ArrayList list = new ArrayList();
      list.add(123);
      list.add(456);
      list.add("Aa");
      list.add(new Person("tom",123));
      list.add(456);
      System.out.println(list);
      //void add(int index,Object ele):在index位置插入ele元素
      list.add(1,"bb");
      System.out.println(list);

      //boolean addALL(int index,Collction eles);从index位置开始将eles中的所有元素添加到list当中。
      List list1 = Arrays.asList(1,2,3);
      list.addAll(list1);
      System.out.println(list.size());//9

      //Object get(int index):获取指定index位置的元素
      System.out.println(list.get(1));

      //int indexOf(Object obj)返回obj在集合中首次出现的位置,如果不存在返回-1
      System.out.println(list.indexOf("bb"));

      //int lastIndexOf(Object obj)返回obj在集合中末次出现的位置,如果不存在返回-1
      System.out.println(list.lastIndexOf(456));

      //Object remove(int index)移除指定index位置的元素,并返回此元素
      Object obj = list.remove(1);//按照索引删
      System.out.println(obj);
      System.out.println(list);

      //Object set(int index ,Object ele)设置指定index位置的元素为ele
      list.set(1,"CC");
      System.out.println(list);

      //List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的左闭有开区间的子集合
      List sublist = list.subList(2, 4);
      System.out.println(sublist);//返回值
      System.out.println(list);//本身没变
  }
}


加油OVO

 

posted @ 2021-03-26 15:32  独眼龙  阅读(142)  评论(0)    收藏  举报