zoukankan      html  css  js  c++  java
  • 集合

    Collection

    集合:存储对象的容器。
        
    Collection:根接口,这个体系下有些集合可以存储重复元素,而另一些不允许,有一些存储元素是有序,另一些是无序的。
    

    集合和数组的区别

    长度:
      	数组一旦创建长度不可改变
     	集合长度可变
    存储元素:
      	数组可以存储基本数据类型和引用数据类型
      	集合只能存储引用类型
    

    List

    List:存储元素有序(存入和取出的顺序一致),可重复。
      void add(int index, E element):在指定位置添加元素
      E get(int index):获取指定位置上的元素
      E set(int index, E element):修改指定位置的元素
      E remove(int index):删除指定元素
    
    List三个实现类的特点:
    ArrayList:底层数组,查询快,增删慢。
    	  线程不安全,效率高。
    Vector:底层数组,查询快,增删慢。
           线程安全,效率低。
    LinkedList:底层链表,查询慢,增删快。
    

    泛型

      泛型:创建集合是明确集合中存储的数据类型。
      语法:
      	<引用数据类型>
      
      泛型好处:
      	1.避免了强制类型转换
      	2.将运行时期错误提前到编译时期
      	3.解决了黄色警告线
    

    forEach

     forEach:遍历数组集合
      语法:
      	for(元素的数据类型 变量名:数组或者集合的名称){
      		使用该变量,该变量就是每一个元素
       }
    	注意:
    	 1.底层迭代器
            好处:
    	 简化了遍历代码
    

    HashSet

    如何保证元素唯一?
      	HashSet的add()方法底层依靠两个方法:hashCode()和equals()
      		方法的执行步骤:
      			首先执行hashCode(),比较对象的哈希值
      				相同:会执行equals()方法
      					内容不同:存储
      					内容相同:不存
      				不同:直接存储
    

    TreeSet

    特点:排序,唯一。
    排序的方式:
    	自然排序
    	比较器排序
    自然排序:如果一个类想要实现自然排序,必须实现comparable接口
    比较器排序:需要使用带参构造,传递一个compartor的实现类对象
    

    LinkedHashSet

    特点:有序,唯一。
    

    Map

     collection和Map的区别?
      	collection每次存储一个元素,Set集合是不可重复,List集合是可重复。
      	Map集合每次存储两个元素,键不可重复,值可重复。
     Map集合遍历方式1:
      	1.得到所有的键存放在Set集合中 -- keySet()
      	2.遍历键所在的集合,得到每一个键
      	3.通过当前的键得到对应的值
     代码:
    	Set<泛型> keys = 集合名.keySet();
    	for(泛型 key: keys){
        	值的数据类型 value = 集合名.get(key);
    	}
    
      Map遍历第二种方式:
      	1.拿到每一个键值对存储在集合中
      	2.遍历键值对所在的集合,拿到每一组键值对
      	3.通过该键值对,获取键,获取值
    代码:
    	Map<String, String> map = new HashMap<String, String>();
    	Set<Map.Entry<String, String>> entrys = map.entrySet();
    		for(Map.Entry<String, String> entry:entrys){
    			//K getKey():返回与此项对应的键。 
    			//V getValue():返回与此项对应的值。 
    			String key = entry.getKey();
    			String value = entry.getValue();
    			System.out.println(key+"  "+value);
    		}
    

    HashMap

    注:使用HashMap集合存储键值对,自定义对象作为键,需要在类中覆盖hashCode()和equals()方法。
    
      HashMap和Hashtable的区别?
      HashMap可以存储null键和null值,线程不安全,效率高
      Hashtable不可以存储null键和null值,线程安全,效率低
    

    TreeMap

    注:使用TreeMap集合存储键值对,自定义对象作为键,需要在类中实现排序接口,覆盖接口中的方法。
    

    LinkedHashMap

    LinkedHahshMap:键有序,唯一
    
  • 相关阅读:
    第十一章 表单与验证
    第十章 日期与时间
    第九章 正则表达式
    第八章 字符串处理
    纯C实现面向对象之接口编程
    csharp 面向对象编程
    cpp面向对象编程
    javascriptMVC框架面向对象编程
    堆栈的区别
    Java堆栈简介
  • 原文地址:https://www.cnblogs.com/lhy8116/p/14197449.html
Copyright © 2011-2022 走看看