集合部分(1)

package Day14;
import java.util.ArrayList;
import java.util.Collection;
import java.util.stream.Collector;

public class Test_03 {

	public static void main(String[] args) {
		//DemoA();
		//DemoB();
		//DemoC();
		//DemoD();
		DemoE();
		
	}
	public static void DemoA(){
		Collection  co  =  new  ArrayList();
		co.add(123);//1.添加元素
		co.add(120.1);
		co.add(true);
		co.add('我') ;
		co.add("搜索");
		co.add(new	Student("zhanghao",23)   )  ;
		System.err.println(co);
		
		co.remove("搜索");//2.刪除指定元素
		co.remove('我');
		System.err.println(co);
		
		co.clear();//3.清除集合(所有元素)
		//System.out.println(co);
		
		boolean cc  = co.contains(123);//4.如果此列表中包含指定的元素,则返回 true。
		System.out.println(cc);
		
		boolean ccc =co.isEmpty();//5.如果此列表中没有元素,则返回 true
		System.out.println(ccc);
		
		int  aaa = co.size();//6.返回此列表中的元素数。
		System.out.println("元素長度:"+aaa) ;
	}
	
	
	public static void DemoB(){
		Collection  s =  new  ArrayList();
		s.add("a");
		s.add("b");
		s.add("c");
		s.add("d");
		s.add("e");
		
		Collection s1 = new  ArrayList();
		s1.add("f");
		s1.add("g");
		s1.add("d");
		s1.add("e");
		
		s.addAll(s1);//把元素1追加到元素2后面
		System.out.println(s1);  

		s1.add("add"+s);//把整个集合当作1个元素扔进去
		System.out.println(s);  
		//s1.removeAll(s);
	}
	public static void DemoC(){
		Collection  s =  new  ArrayList();
		s.add("a");
		s.add("b");
		s.add("c");
		s.add("d");
		s.add("e");
		
		Collection s1 = new  ArrayList();
		s1.add("f");
		s1.add("g");
		s1.add("d");
		s1.add("e");
		
		boolean b= s.retainAll(s1);//保留相同(保留交集),删除不同(求交集)
		//   仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。
		System.out.println(s);
		System.out.println("===============================");
		/*取交集
		如果两个集合有相同的元素,调用的集合中只会保留和传入的集合相同的元素
		如果没有交集,调用的集合将会被清空;
		
		返回值:true   false 
		如果調用的集合,由於調用而發生改變,則返回true
		如果調用的集合和傳入的集合完全相同,調用的集合沒發生改變則返回false
		*/

	}
		public static void DemoD (){
			Collection  s =  new  ArrayList();
			s.add("a");
			s.add("b");
			s.add("c");
			s.add("d");
			s.add("e");
			
			Collection s1 = new  ArrayList();
			s1.add("f");
			s1.add("g");
			s1.add("d");
			s1.add("e");
			
			boolean b = s.removeAll(s1);//保留不同,(删除交集)
			//调用的集合中,删除了和传入集合中元素相同的,
			//  移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。
			System.out.println(b);
			System.out.println(s);
		}
		public static void DemoE(){
			Collection  s =  new  ArrayList();
			s.add("a");
			s.add("b");
			s.add("c");
			s.add("d");
			s.add("e");
			
			Collection s1 = new  ArrayList();
//			s1.add("f");
//			s1.add("g");
			s1.add("d");
			s1.add("e");
			
			boolean b = s1.containsAll(s);
			//判断调用的集合是否包含传入集合的所有元素,包含返回true否则false
			System.out.println(b);
			System.out.println(s1);
			
			boolean bb = s.containsAll(s1);
			System.out.println(bb);
		}
		
		
		//s.containsAll(s1);//如果此 collection 包含指定 collection 中的所有元素,则返回 true。	

	
}

课堂笔记2
    常见的开发工具介绍
        1.操作系统自带的记事本
        2.EditPlus
        3.集成的开发环境 IDE
            integrated development environment

        Eclipse    
        MyEclipse

        Eclipse 是一种可扩展的开放源代码的IDE
        特点:
            免费
            纯java语言编写
            免安装
            扩展性强
        MyEclipse
            在Eclipse基础上追加了功能性插件 对插件收费
            在web开发中提供强大的系统架构平台
        下载:
            http://eclipse.org/
            org 是非盈利团体
集合:
  1.Collection接口
    List
        2.ArrayList
        3.LinkedList
        4.使用ArrayList 和 LinkedList的场景
        5.Vector
     Set
        1.HashSet
        2.TreeSet
  2.Map
    1.HashMap
    2.TreeMap


1.什么是集合
    集合的由来
         数组在储存引用数据类型 储存的都是地址址
        Student[] arr= new Student[5];//数组有局限性(长度固定,数据类型固定)如:不能使用arr[3]="喔喔"
        arr[0]=stu1;


        数组的长度是固定的,添加的元素超过当前长度,扩充当前数据 我们操作起来很不方便
        java 给我们提供了一个集合类 能够存储任意对象 长度是可变的 随着元素的增加而增加 随着元素的减少而减少
    数组和集合的区别?
        区别1
            数组可以存放基本数据类型 也可以存放引用数据类型
            基本数据类型存的是值  引用数据类型存的是地址
            数组在创建的时候 就会定义它存储什么类型的数据 也就是说只能存储一种数据类型

            集合只能存储引用数据类型(对象)
                也可以存储基本数据类型(装箱)
            在存储基本数据类型会自动转为包装类型

            集合如果没有定义泛型限定之前 默认存储的都是Object类型的数据 也就是可以存储任意类型
        区别2
            数组的长度是固定的 不能自动增长
            集合的长度是可变的 根据元素的多少来决定长度
        什么时候使用数组 / 集合?(当做容器来看)
            长度能确定 就数组
            长度不确定 就集合

        储存方式不同也是说数据结构不同,从体系分析
        (爹有的是共性方法,儿子有的是特性方法,掌握共性的方法
        共性看父类,特性看子类,儿子比父类强大,

    

,特性的比较少(从上往下找);)
    
2.Collection接口
    Collection接口不能被实例化
    Collection 对象名 = new 接口的实现类(); //多态

    为了演示 我们简要使用 ArrayList 代替实现类

    基本功能:
        boolean add(E e)
        boolean remove(Object o)
        void clear()
        boolean contains(Object o)
        boolean isEmpty()
        int size()
    带All的功能
        boolean addAll(Collection c)
        boolean removeAll(Collection c)
        boolean containsAll(Collection c)
        boolean retainAll(Colection c)

    Iterator iterator()
    Object[] toArray()

    常见的集合遍历方式
        1.普通for 循环
            先要将集合转成数组 toArray()方法 然后才能遍历
        2.增强for 循环
        
        /*
         * for(元素类型 变量 : 要遍历的范围){
         *         变量名是随便写的 但是 在增强for循环中 代表的是当前遍历范围内的元素
         * }
         * For-Each 循环 缺点:丢掉了索引信息
         * 当遍历集合或者数组时 如果需要访问集合或数组的下标 就不能使用增强for 循环了
         * */

        3.迭代器 Iterator
            通过 Collection中的 iterator()方法 能够获取迭代器
            
            迭代器是对集合的遍历 就是把取出方式定义在Iterator中 进行取出

             boolean hasNext()  如果仍有元素可以迭代,则返回 true。
                E next()    返回迭代的下一个元素。
             void remove()  从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
    Collection
        |---List : 元素是有序的(存入顺序和底层存储顺序一致) 元素可以重复 因为该集合体系有索引
        |---Set  : 元素是无序的(存入顺序和底层存储顺序不一致) 元素不可以重复
 
List集合
    特有方法 ,凡是可以操作角标的方法都是该体系特有的方法

    增
        add(index,element)
        addAll(index,Collection)

    删
        remove(index)
    改
        set(index,element)

    查
        get(index)
        List<E> subList(int fromIndex, int toIndex)
        ListIterator<E> listIterator()
List集合中的三个常用子类
    ArrayList
        长度可变的数组 查询修改快 增删慢
        线程不安全 效率高
    LinkedList
        底层是双向链表 查询修改慢 增删快
        线程不安全 效率高
    Vector
        底层是数组 是ArrayList的老版本
        长度可变的数组 查询修改快 增删慢
        线程安全 效率低


 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值