美文网首页
8.16 集训第十五天 【数组&集合】

8.16 集训第十五天 【数组&集合】

作者: 草莓灵啾啾 | 来源:发表于2019-08-17 00:14 被阅读0次
Collection API(摘列)

-- - - -> implements ——>extends

一. 数组
  • Array和ArrayList的区别:
  1. Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。
  2. Array大小是固定的,存放对象时必须指定大小;ArrayList的大小是动态变化的。
  3. ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。
  • 在使用ArrayList时,相当于在运用ArrayList类型的对象,因此就跟运用其他的对象一样,可以使用“.”运算符来调用它的方法。使用Array时,用特殊的数组语法来操作它,数组的方法无法被调用,最多只能存取它的length实例变量。

ArrayList常用方法

修饰符和类型 方法 说明
void add(int index, E element) 将指定的元素插入此列表中的指定位置
boolean add(E e) 将指定的元素添加到此列表的尾部
E remove(int index) 移除此列表中指定位置上的元素
boolean remove(Object o) 移除此列表中首次出现的指定元素(如果存在
void clear() 移除此列表中的所有元素
boolean isEmpty() 如果此列表中没有元素,则返回 true
boolean contains(Object o) 如果此列表中包含指定的元素,则返回 true
int indexOf(Object o) 返回此列表中首次出现的指定元素的索引或如果此列表不包含元素,则返回 -1
int lastIndexOf(Object o) 返回此列表中最后一次出现的指定元素的索引,或如果此列表不包含索引,则返回 -1。
二. 集合
  • 集合类型主要有3种:set(集)、list(列表)和map(映射)。(集合里面只能存放对象)
    list:是一种知道索引位置的集合,可以多个元素引用相同的对象。
    set:无序、不重复的集合、能知道某物是否已经存在于集合中,不会有多个元素引用相同的对象。
    map:(映射关系)使用成对的键值和数据值。(用key来搜索)两个key可以引用相同的对象,但key不能重复,key可以是String,也可以是任何对象
    集合接口分为:Collection和Map,list、set实现了Collection接口
三. 集合的遍历
       //1.使用Iterator来遍历
       hasNext 判断是否有元素
       next 获取下一个对象
       remove 删除当前遍历过后的对象
       Iterator iterator= t2.iterator();

       while (iterator.hasNext()){
           System.out.println(iterator.next());
       }

       //2.for-each 增强for循环 快速循环
       for(String obj:t2){
           System.out.println(obj);
       }

       //3.for-i
       for(int i=0;i<t2.size();i++){
           System.out.println(((ArrayList<String>) t2).get(i));
       }
四. Lambda表达式

1.Lambda 表达式主要用来定义行内执行的方法类型接口
2.Lambda 表达式免去了使用匿名方法的麻烦

    // 1.使用方式:定义一个类 实现接口
      ArrayClass ac = new ArrayClass();
       int[] num = {1,2,3,4,5,6};
       PXDClass pc = new PXDClass();
       ac.test(num, pc);
    // 2.使用匿名类
  ArrayClass ac=new ArrayClass();
  int[] num={1,2,3,4,5};

  ac.test(num, new Show() {
      @Override
      public void customShow(int element) {
          System.out.println(element);
      }
  });
   //3.使用Lambda表达式
      ArrayClass ac=new ArrayClass();
      int[] num={1,2,3,4,5};
      ac.test(num,(int element)->{System.out.println(element);})
   //4.如果只有一个参数 参数类型可以省略
      ArrayClass ac=new ArrayClass();
      int[] num={1,2,3,4,5};
      ac.test(num,element -> {System.out.println(element);});
   //5.如果代码块里面只有一行语句 大括号可以省略
      ArrayClass ac=new ArrayClass();
      int[] num={1,2,3,4,5};
      ac.test(num,element -> System.out.println(element));
//闭包enclusure 把函数作为一个方法的参数
class ArrayClass{
   public void test(int[] target,Show s){
       for(int element:target){
           s.customShow(element);
       }
   }
}

//必须是接口 且这个接口里面只有一个方法
interface  Show{
    void customShow(int element);
}
class PXDClass implements Show{

   @Override
   public void customShow(int element) {
System.out.println(element);
   }
}

相关文章

网友评论

      本文标题:8.16 集训第十五天 【数组&集合】

      本文链接:https://www.haomeiwen.com/subject/bwzqsctx.html