Collection 集合的定义和使用

2019-08-16  本文已影响0人  黑铁选手

目的:

掌握Collection集合的定义和使用方法

相关技术、及其使用

1、Collection集合的作用:可以定义一个随时改变的数组

2、定义Collection集合的相关操作:
Collection 抽象接口 定义集合的相关操作
|-- List 列表 数组 接口 特点 :有序 可以重复
|--ArrayList
|-- LinkedArrayList
|-- Set "集合" 特点 : 无序 不重复
|---HashSet

3、改变集合中的元素方法:
增加一个对象 :add 在指定位置添加 add(i,o)

//添加一个对象
        t1.add("jack");
        t1.add("Merry");
        System.out.println(t1);
        score.add(3);//在末尾添加
        score.add(0, 1);//在指定位置插入

删除一个对象 : remove 移除指定位置的对象 remove(i,o)

        t1.remove("jack");
        score.remove(0);//删除指定位置的元素
        score.remove((Integer) 2);//删除指定的对象

获取元素个数 :size

System.out.println(t1.size());

删除所有元素 ,清空 : clear

t1.clear();

判断某个集合中是否含有某个元素 :contains

  //判断是否包含一个元素
        if (t1.contains("Merry")) {
            System.out.println("有Meryy");
        } else {
            System.out.println("没有Meryy");
        }

判断某个集合是否为空 : isEmpty

  //判断是否为空
        if (t1.isEmpty()) {
            System.out.println("是空的");
        }

判断两个集合是否相同(比较两个集合里面地内容) : equals

   if (t1.equals(t2)) {
            System.out.println("两个集合相同");
        } else {
            System.out.println("两个集合不相同");
        }

取两个集合的交集:retainAll

   ArrayList<Integer> a3 = new ArrayList<>();
        a3.add(1);
        a3.add(2);
        score.retainAll(a3);//取两个集合的交集
        System.out.println(a3);

访问某个对象在某个位置的索引 :indexOf访问初始位置 lastIndexOf访问最后一次出现的位置

     ArrayList<Integer> a4 = new ArrayList<>();
        a4.add(1);
        a4.add(2);
        a4.add(2);
        a4.add(1);
        System.out.println(score.indexOf(1));//如果所访问的元素有多个相同值访问第一次出现的位置
        System.out.println(score.lastIndexOf(1));//最后一次出现的位置

获取某个范围里面的对象 subList(i,o)

 List<Integer> integers = a4.subList(1, 2);
            System.out.println(integers);

修改某个位置的值: set(i,0)

   //修改一个元素set set(地址,值)
        score.set(0, 0);
        System.out.println(score);

注:集合里面只能存放对象

4、集合的遍历:
(1)使用使用Iterator来遍历
hasNext 判断是否有元素
next 获取下一个对象
remove 删除当前遍历后的对象
(2)for -each (增强for循环) 快速循环
(3)for- i循环
ArrayList (连续的内存空间 )
优点:
访问方便 通过get ()方法就能访问
缺点:
元素的删除和添加效率低
LinkedList内部使用链表链接 不一定连续(基本不连续)
优点:增减删除效率高 缺点:访问

5、基本数据类型对应的包装类
byte char int long float double boolean
Byte Char Integer Long Float Double Boolean
ArrayList里面自动将基本数据类型包装为对应的类

6、将ArrayList转变为普通数组 toArray

7、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,6};
       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,6};
       ac.test(num,(int element) ->{
           System.out.println(element);
       });
       //4、如果只有一个参数 参数类型可以省略
       ArrayClass ac  = new ArrayClass();
       int [] num = {1,2,3,4,5,6};
       ac.test(num,element -> {
           System.out.println(element);
       });
       //5、 如果代码块里面只有一行语句 大括号可以省略
       ArrayClass ac  = new ArrayClass();
       int [] num = {1,2,3,4,5,6};
       ac.test(num,element -> System.out.println(element));

8、自己写一个比较器:

class PXDCompare implements Comparator {
    //  什么时候需要手动创建比较器
    //如果系统默认提供的方法不能完成我们的比较
    //1、参与比较的对象必须要
    @Override
    public int compare(Object o, Object t1) {
        int mo = (int)o;
        int mt1 = (int)t1;
        return mo-mt1;
    }
}

PS

今天所讲的Collection集合的使用比较简单,但是,还是对lambda 有点不是太了解。感觉今天讲的知识点虽然很枯燥,但是有必须要掌握。

上一篇下一篇

猜你喜欢

热点阅读