Java笔记08-集合

 

集合:存储对象的容器。
 * 
 * 数组和集合区别:
 *     长度:
 *         数组一旦创建长度不可改变
 *         集合长度可变
 *     存储元素:
 *         数组可以存储基本数据类型和引用数据类型
 *         集合只能存储引用类型
 
 Collection
       添加功能:
     *     boolean add(Object e):添加任意对象
     * 
     * 删除功能:
     *     void clear():移除所有元素
     *     boolean remove(Object o):删除一个元素
     * 
     * 判断功能:
     *     boolean contains(Object o):判断集合中是否包含某个对象
     *     boolean isEmpty():判断集合是否为空
     * 
     * 获取功能:
     *     int size():获取集合的长度
     *         数组长度:length    字符串长度:length()
     *
     *Object[] toArray():集合转为Object数组
     *
     * boolean addAll(Collection c):添加一个集合的元素
     * boolean removeAll(Collection c):删除两个集合中相同的元素
     * boolean containsAll(Collection c):判断集合中是否包含另一个集合中的所有元素
     * boolean retainAll(Collection c):将两个集合中重复的元素保留,如果集合改变返回true,不改变返回false
     
     *Iterator iterator():迭代器遍历集合
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:底层链表,查询慢,增删快。
    Vector独有方法:
     * 独有方法:
     *  void addElement(E obj): -- add()
     *  E elementAt(int index): -- get()
     *  boolean removeElement(Object obj): -- remove(Ojbect obj)
     *  void setElementAt(E obj, int index): -- set()
     *  E firstElement():
     *  E lastElement():
    
    LinkedList独有方法:
     *  void addFirst(E e)
     *  void addLast(E e)
     *  E getFirst()
     *  E getLast()
     *  E removeFirst()
     *  E removeLast() 
泛型
    * 泛型:创建集合是明确集合中存储的数据类型。
    * 语法:(掌握)
    *  <引用数据类型>
    * 
    * 泛型好处:
    *  1.避免了强制类型转换
    *  2.将运行时期错误提前到编译时期
    *  3.解决了黄色警告线
 
    泛型可以应用在类、方法、接口。
    应用在类语法:public class 类名<泛型>{}
    应用在方法上:public <泛型> 返回值类型 方法名(泛型 e){}
    应用在接口上:interface 接口名<泛型>{}
forEach
    * forEach:遍历数组集合
    * 语法:(掌握)
    *  for(元素的数据类型 变量名:数组或者集合的名称){
    *      使用该变量,该变量就是每一个元素
    *  }
    快捷键:foreach+alt+/
    注意:
        1.底层迭代器
    好处:
        简化了遍历代码
TreeSet
    特点:排序,唯一。
LinkedHashSet     
    特点:有序,唯一。

Map
    * collection和Map的区别?
    *  collection每次存储一个元素,Set集合是不可重复,List集合是可重复。
    *  Map集合每次存储两个元素,键不可重复,值可重复。
    * Map接口中的方法:
    *  添加功能:
    *      V put(K key, V value):当键第一次存储返回null,接下来每一次存储返回上一次的值。
    *  删除功能:
    *      void clear()
    *      V remove(Object key):根据键删除键值对,返回值。
    *  获取功能:
    *      Set<Map.Entry<K,V>> entrySet():得到的是每一组键值对,存放在一个Set集合中。
    *      Set<K> keySet():得到所有的键
    *      Collection<V> values():得到所有的值
    *      V get(Object key):根据键得到值。
    *      int size():获取集合中总共几对元素。
    *  判断功能:
    *      boolean containsKey(Object key):是否包含指定的key
    *      boolean containsValue(Object value):是否包含指定的value
    *      boolean isEmpty():集合是否为空
 
 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值,线程安全,效率低

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值