首页 > 其他分享 >达内培训Week2 集合01 8.24

达内培训Week2 集合01 8.24

时间:2022-08-24 19:03:32浏览次数:120  
标签:01 java System 8.24 集合 add println Week2 out

集合01 8.24

  1. 什么是集合:

    • 集合和数组类似,可以保存一组元素,并且提供了操作数组元素的方法,使用方便。
  2. Java集合框架接口

    • Java.util.Collection接口:所有结合的接口,封装了所有集合共有的内容。下面有多个实现类,有更多的数据结构可以选择。
    • Collection接口下面还有常见的子接口:
      • List ,线性表,可以重复集合
      • Set ,不可重复,无序
      • Map,键值对K-V
  3. 常见操作

    • add():
    • size():
    • isEmpty():
    • clear():
    • contains():
    • remove():从集合中删除给定元素,成功删除返回true.
    • addAll():将参数给定的集合中的所有元素添加到当前集合中,添加后当前集合发生改变则返回true
    • containsAll():判断当前集合中是否包含参数集合中的所有元素
    • retainAll():取交集
    • removeAll():删交集
  4. 集合的遍历:

    • Collection接口提供了统一的遍历集合的方式:迭代器模式。通过iterator()方法可以获取一个用于遍历当前集合元素的迭代器(Iterator接口)。
    • java.util.Iterator接口:定义了迭代器遍历集合的相关操作。不同的集合都实现了用于遍历自身元素的迭代器实现类,我们无需记住它们的名字,从多态的角度把它们看成Iterator即可。
    • 迭代器遍历遵循的步骤为:问、取、删,其中删除元素并不是必要操作
    • JDK1.5时推出了一个特性:增强型for循环,也称为新循环,让我们使用相同的语法遍历集合和数组。

    • 语法:

      for(元素类型 变量名 : 集合或数组){
          循环体
      }
      
  5. 由于集合没有下标,需要用迭代器来遍历

    迭代器操作:问,取 ,删除

    快捷键itit

    增强for循环,jdk1.5以后的新功能

    语法: for(元素类型 变量名:数组或集合){

    ​ 循环体

  6. 泛型

    • jdk1.5的新特性:泛型

    • 泛型也是参数化类型。允许我们在使用类中指定它当中的属性和方法、参数或返回值,使得使用更加方便。

      • 泛型在集合中被广泛使用
  7. 集合与数组的转换:

    • 数组转换为List集合:
    • List集合转为数组:
    package com.mlyStudyJava.collection_;
    
    import java.util.Objects;
    
    public class Point {
        private int x;
        private int y;
    //构造方法,构造方法器是与类名一致。
        public Point(int x, int y) {
            this.x = x;
            this.y = y;
        }
     //toString 从地址->数值
    
        @Override
        public String toString() {
            return "Point{" +
                    "x=" + x +
                    ", y=" + y +
                    '}';
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Point point = (Point) o;
            return x == point.x &&
                    y == point.y;
        }
    
    
        //get set x,y
        public int getX() {
            return x;
        }
    
        public void setX(int x) {
            this.x = x;
        }
    
        public int getY() {
            return y;
        }
    
        public void setY(int y) {
            this.y = y;
        }
    }
    
package com.mlyStudyJava.collection_;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;

public class Collection01 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add("one");
        c.add("two");
        c.add("three");
        c.add("four");
        c.add("five");
        boolean b = c.add("six");
        System.out.println(c);//Collection重写了Object的toString方法

        int size = c.size();
        System.out.println("size:"+size);

        boolean isEmpty = c.isEmpty();
        System.out.println("是否是空集:" +isEmpty);
        c.clear();
        System.out.println(c);
        System.out.println("size:"+c.size());
        System.out.println("是否为空集:"+c.isEmpty());
    }
}
package com.mlyStudyJava.collection_;

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

public class Collection02 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add(new Point(1,2));
        c.add(new Point(3,4));
        c.add(new Point(5,6));
        c.add(new Point(7,8));
        c.add(new Point(9,0));
        c.add(new Point(1,2));
        //集合 的 Point重写了Object的toString()方法
        //前提是要在Point中先重写,如果不重写也不行,输出就是内存地址
        //[元素1.toString(),元素2.toString(), ....]
        System.out.println(c);


    }


}
package com.mlyStudyJava.collection_;

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

public class Collection03 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add(new Point(1,2));
        c.add(new Point(3,4));
        c.add(new Point(5,6));
        c.add(new Point(7,8));
        c.add(new Point(9,0));
        c.add(new Point(1,2));
        final Point p = new Point(1, 2);
        //判断c中是否包含p,判断依据是p是否与集合元素存在equals为true的情况
        //当point重写equals后就会变T 因为equals比较值,不然还是F原来比较对象地址
        boolean contains = c.contains(p);
        System.out.println("是否包含:"+contains);//F 未重写p的euqals
        System.out.println("是否包含:"+contains);//T 重写后
/**
 * boolean remove ()
 * 从集合中删除给定元素equals比较true ,若存在重复元素删除
 */

        c.remove(p);
        System.out.println(c);
    }
}
package com.mlyStudyJava.collection_;

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

public class Collection04 {
    public static void main(String[] args) {
        Collection c1 = new ArrayList();
        c1.add("java");
        c1.add("c++");
        c1.add(".net");
        System.out.println(c1);//[java,c++,net]

        System.out.println("===============");
        Collection c2 = new ArrayList();
        c2.add("android");
        c2.add("ios");
        c2.add("java");
        System.out.println(c2);//[android,ios,java]
/**
 * boolean addAll(Collection c)
 * 将参数给定的集合中所有的元素添加到当前集合,添加后当前集合后发生改变返回
 */
        c1.addAll(c2);
        System.out.println("c1:"+c1);
        System.out.println("c2:"+c2);
        System.out.println("==================");
        Collection c3 = new ArrayList();
        c3.add("c++");
        c3.add("android");
        c3.add("php");
        System.out.println("c3:"+c3); //[c++,android,php]

        /**
         * boolean containsAlL(Collection c)
         * 判断集合中是否包含参数的所有集合
         */

        boolean contains = c1.containsAll(c3);//判断c1中是否包含c3
        System.out.println("是否包含所有:"+contains);

        System.out.println("====================");
        //取交集 c1中仅保留c1与c3的共有元素,c3不变
//        c1.retainAll(c3);
//
//        System.out.println("c1:"+c1);
//        System.out.println("c3:"+c3);
//        System.out.println("====================");
        c1.removeAll(c3);
        System.out.println("c1:"+c1);
        System.out.println("c3:"+c3);


    }



}
package com.mlyStudyJava.collection_;

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

public class Collection05 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        Point p = new Point(1, 2);
        c.add(p);
        System.out.println("p:" + p); //(1,2)
        System.out.println("c:" + c);//[(1,2),(3,4)]

    }
}
package com.mlyStudyJava.collection_;

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

/*
集合转换成数组
Collection->toArray可以将当前集合转换为数组
 */
public class CollectionToArray01 {
    public static void main(String[] args) {
        Collection<String > c = new ArrayList<>();
        c.add("one");
        c.add("two");
        c.add("three");
        c.add("four");
        c.add("five");
        System.out.println(c);
        System.out.println("=========================");
        String[] array = c.toArray(new String[8]);
        /**
         * 若参数的数组元素=集合元素个数,就正常转换
         * 若参数的数组元素>集合元素个数,就正常转换,同时末尾补默认值
         * 若参数的数组元素<集合元素个数,就会按照集合大小给数组
         */
        System.out.println(Arrays.toString(array));
    }
}
package com.mlyStudyJava.collection_;

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

public class GenericDemo {
    public static void main(String[] args) {

       Collection<String> c = new ArrayList<>();
       c.add("one");
       c.add("two");
       c.add("three");
       //c.add(123);//编译错误,参数类型违背了集合c所指定的泛型E,应该是String
        Iterator<String> it =c.iterator();
        while(it.hasNext()){
            String str = it.next();
            System.out.println(str);
        }
        System.out.println("==============");
        for(String str:c){
            System.out.println(str);
        }

    }
}
package com.mlyStudyJava.collection_;

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

/**
 * 集合的遍历:
 */
public class Iterator01 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add("one");
        c.add("#");
        c.add("two");
        c.add("#");
        c.add("three");
        c.add("#");
        c.add("four");
        c.add("#");
        c.add("five");
        System.out.println(c); //[one, #, two, #, three, #, four, #, five]
    /*
    迭代器的常用方法
    1.boolean hasNext()    -----问
    询问集合是否还有“下一个”元素可供迭代
    注意:迭代器默认开始位置是在初始位置之前 -1的位置 应该是指针
    无论调用多少次hasNext()方法,迭代器的位置都不会变
    2.Object next()-------------取
    迭代器向后移动一个位置来指向集合的下一个元素并将其获取

     */

        Iterator it =c.iterator();//获取集合c的迭代器 c.iterator.var
        while (it.hasNext()) {//若有下一个元素
            String str =(String)it.next();//获取下一个元素
           if("#".equals(str)){
               //c.remove(str);集合的长度不能变
               it.remove();//删除所取的元素
           }

            System.out.println(str);
        }
        System.out.println(c);

    }
}
package com.mlyStudyJava.collection_;

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

public class NewFor {
    public static void main(String[] args) {
        String[] array ={"one","two","three","four","five"};
        for (int i = 0; i <array.length ; i++) {
           // String str = array[i];
            System.out.println(array[i]);

        }
        System.out.println("================");
        Collection c =new ArrayList();
        c.add("one");
        c.add("two");
        c.add("three");
        c.add("four");
        c.add("five");
        Iterator it = c.iterator();
        while (it.hasNext()) {
            Object next =  it.next();
            System.out.println(next);

        }
        System.out.println("================");
        //新的for循环遍历数组
        for(String str :array){
            System.out.println(str);
        }
        System.out.println("================");
        for(Object obj :c){
            //String str=(String)obj;
            System.out.println(obj);

        }


    }
}

标签:01,java,System,8.24,集合,add,println,Week2,out
From: https://www.cnblogs.com/maluyi/p/16621234.html

相关文章

  • 题解:【TJOI2012】防御
    【TJOI2012】防御题目链接小清新数据结构题,题解区为啥清一色两棵线段树。考虑分块,维护两个数组:$tag$和$minx$分别记录整块的累计伤害和当前护盾最小值。当发现有护盾......
  • 题解:【THUSCH2017】 大魔法师
    【THUSCH2017】大魔法师题目链接前言线段树和矩阵乘法的板子拼接题,这个题题目本身思维难度不大,但是可以给我们提供许多平时写代码的底层优化技巧。题目思路首先回到......
  • 题解:【POI2001】Goldmine
    【POI2001】Goldmine题目链接扫描线板子题,本质上这个题跟窗口的星星是一样的,只不过把权值$k$都换成$1$就行。但是需要注意的是这句话:(若矿石位于这块地的边缘,我们同......
  • #前端算法救赎系列#LeetCode01.两数之和
    1.两数之和给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。示例1:输入:nums=[2,7,11,1......
  • [网鼎杯 2018]Comment-1|SQL注入|二次注入
    1、打开之后只有一个留言页面,很自然的就想到了二次注入得问题,顺带查看了下源代码信息,并没有什么提示,显示界面如下:2、那先扫描一下目录,同时随便留言一个测试以下,但是显示......
  • MxDraw云图平台 2022.08.24更新
     SDK开发包下载地址:https://www.mxdraw.com/ndetail_30187.html1.增加对像扩展数据功能2.增加CADGIS使用功能  https://www.mxdraw3d.com/sample/vuemapbox/?cm......
  • NC19996 [HAOI2015]树上染色
    题目链接题目题目描述有一棵点数为N的树,树边有边权。给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白色。将所有点染色后,你会......
  • ORA-01950: no privileges on tablespace 'USERS'-- 解决办法
    ORA-01950:noprivilegesontablespace'USERS' 原因: 在表空间“USERS”无权限解决办法: 用户登录,查看当前用户所属表空间:select 用户名,default_tablespace......
  • Windows2016/2019评估版转正式版
    (15条消息)WindowsServer2012和2016从Evaluation评估版升级到正式版方法(附带产品密钥/key)_vivisosog的博客-CSDN博客_server2016安装密钥解析说明:什么叫做Evaluation评......
  • 启动项目报错:Error: error:0308010C:digital envelope routines::unsupported
    启动项目报错信息如下:Error:error:0308010C:digitalenveloperoutines::unsupportedatnewHash(node:internal/crypto/hash:71:19)atObject.createHash(nod......