• Collection、List、Set、Map、泛型


    一、Collection集合

           集合:集合是java提供的一种容器,可以用来存放多个数据

           集合和数组区别:

    • 数组的长度是固定的。集合的长度是可变的。

    • 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。

            Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.Listjava.util.Set

          List:元素有序、元素可重复。主要实现类有java.util.ArrayListjava.util.LinkedList

          Set:元素无序,而且不可重复。主要实现类有java.util.HashSetjava.util.TreeSet

      Collection的方法实例: 

    import java.util.ArrayList;
    import java.util.Collection;
    
    public class Demo1Collection {
        public static void main(String[] args) {
            // 创建集合对象 
            // 使用多态形式
            Collection<String> coll = new ArrayList<String>();
            // 使用方法
            // 添加功能  boolean  add(String s)
            coll.add("小李");
            coll.add("小吴");
            System.out.println(coll);
    
            // boolean contains(E e) 判断o是否在集合中存在
            System.out.println("判断  小吴 是否在集合中"+coll.contains("小吴"));
    
            //boolean remove(E e) 删除在集合中的o元素
            System.out.println("删除小李:"+coll.remove("小李"));
            System.out.println("操作之后集合中元素:"+coll);
            
            // size() 集合中有几个元素
            System.out.println("集合中有"+coll.size()+"个元素");
    
            // Object[] toArray()转换成一个Object数组
            Object[] objects = coll.toArray();
            // 遍历数组
            for (int i = 0; i < objects.length; i++) {
                System.out.println(objects[i]);
            }
    
            // void  clear() 清空集合
            coll.clear();
            System.out.println("集合中内容为:"+coll);
            // boolean  isEmpty()  判断是否为空
            System.out.println(coll.isEmpty());      
        }
    }

     二、Iterator迭代器

          1.Iterator接口

    • public E next():返回迭代的下一个元素。

    • public boolean hasNext():如果仍有元素可以迭代,则返回 true。

    public class IteratorDemo {
          public static void main(String[] args) {
            // 使用多态方式 创建对象
            Collection<String> coll = new ArrayList<String>();
    
            // 添加元素到集合
            coll.add("串串星人");
            coll.add("吐槽星人");
            coll.add("汪星人");
            //遍历
            //使用迭代器 遍历   每个集合对象都有自己的迭代器
           Iterator<String> it =coll.iterator();
            //  泛型指的是 迭代出 元素的数据类型
            while(it.hasNext()){ //判断是否有迭代元素
                String s = it.next();//获取迭代出的元素
                System.out.println(s);
            }
          }
    }

       2.增强for

     例:

    public class NBFor {
        public static void main(String[] args) {        
            Collection<String> coll = new ArrayList<String>();
            coll.add("小河神");
            coll.add("老河神");
            coll.add("神婆");
            //使用增强for遍历
            for(String s :coll){//接收变量s代表 代表被遍历到的集合元素
                System.out.println(s);
            }
        }
    }

    三、List接口

         1.List作为Collection集合的子接口,List新增的方法:

    • public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。

    • public E get(int index):返回集合中指定位置的元素。

    • public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。

    • public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。

        2.1.实现类ArraysList集合

        2.2.LinkList集合

    • public void addFirst(E e):将指定元素插入此列表的开头。

    • public void addLast(E e):将指定元素添加到此列表的结尾。

    • public E getFirst():返回此列表的第一个元素。

    • public E getLast():返回此列表的最后一个元素。

    • public E removeFirst():移除并返回此列表的第一个元素。

    • public E removeLast():移除并返回此列表的最后一个元素。

    • public E pop():从此列表所表示的堆栈处弹出一个元素。

    • public void push(E e):将元素推入此列表所表示的堆栈。

    • public boolean isEmpty():如果列表不包含元素,则返回true。

    四、set接口

           HashSet集合

           LinkedHashSet集合

    五、Map

    • Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。

          1.Map常用的子类

    • HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

    • LinkedHashMap<K,V>:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

        常用方法:

               

    • public V put(K key, V value): 把指定的键与指定的值添加到Map集合中。

    • public V remove(Object key): 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。

    • public V get(Object key) 根据指定的键,在Map集合中获取对应的值。

    • boolean containsKey(Object key) 判断集合中是否包含指定的键。

    • public Set<K> keySet(): 获取Map集合中所有的键,存储到Set集合中。

    • public Set<Map.Entry<K,V>> entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。

        2.Map集合遍历键找值方式

    public class MapDemo01 {
        public static void main(String[] args) {
            //创建Map集合对象 
            HashMap<String, String> map = new HashMap<String,String>();
            //添加元素到集合 
            map.put("胡歌", "霍建华");
            map.put("郭德纲", "于谦");
            map.put("薛之谦", "大张伟");
    
            //获取所有的键  获取键集
            Set<String> keys = map.keySet();  //将map中的每个key放到Set集合中
            // 遍历键集 得到 每一个键
            for (String key : keys) {
                  //key  就是键
                //获取对应值
                String value = map.get(key);
                System.out.println(key+"的CP是:"+value);
            }  
        }
    }

        3.Entry键值对对象

       Entry将键值对的对应关系封装成了对象。即键值对对象

    • public K getKey():获取Entry对象中的键。

    • public V getValue():获取Entry对象中的值。

    public class MapDemo02 {
        public static void main(String[] args) {
            // 创建Map集合对象 
            HashMap<String, String> map = new HashMap<String,String>();
            // 添加元素到集合 
            map.put("胡歌", "霍建华");
            map.put("郭德纲", "于谦");
            map.put("薛之谦", "大张伟");
    
            // 获取 所有的 entry对象  entrySet
            Set<Entry<String,String>> entrySet = map.entrySet();
    
            // 遍历得到每一个entry对象
            for (Entry<String, String> entry : entrySet) {
                   // 解析 
                String key = entry.getKey();
                String value = entry.getValue();  
                System.out.println(key+"的CP是:"+value);
            }
        }
    }

         

  • 相关阅读:
    多线程GCD
    根据UITouch 自定义手势
    KVC在数据解析中的应用
    oc 文件读写操作
    oc 字典应用实例-城市查询省份
    oc 字典应用实例-成绩科目排序
    oc 数组应用实例-验证码
    协议 protocol
    概念杂记
    OC 类的继承 方法重载重写
  • 原文地址:https://www.cnblogs.com/cqyp/p/12411704.html
Copyright © 2020-2023  润新知