• 学习Java的第08天.集合


    集合的学习让我收获很多,下面分享一下我在集合中学到的内容。

    集合和数组的区别:

    数组的特点:

    1.长度是固定的;
    2.存储的数据类型只能是一种;
    3.有默认值。

    集合的特点:

    1.长度是可变的;
    2.用于存储对象的容器;
    3.不能存储基本数据类型。

    集合的体系:

    其中学到了List与Set的区别。

    List特点:

    1.有重复(集合里面的内容可以重复)

    2.有顺序(集合的存取是有顺序的)

    3.有索引(是有缩影的)

    Set的特点

    1.不能重复

    2.没有顺序

    3.没有索引

    今天学习的主要是List!

    首先因为List和Collection是接口,就意味着不能直接去实现,所以我们会用到Java里面的多态,我们用父类去实现子类,这样就可以做到了。

    Collection c = new ArrayList();

    Lise l = new ArrayList();

    学习到了非常多Collection中的方法,常用到的有:

    int size():获取集合的长度。

    Object[] toArray():能够将集合转换成数组并把集合中的元素存储到数组中。

    之后学到了迭代器。

    hasNext()方法:判断集合中是否有元素可以迭代
    next()方法:用来返回迭代的下一个元素,并把指针向后移动一位。
    remove():删除当前正在获取的元素

    其中就有特殊的地方, 当使用迭代器遍历集合的时候,使用了集合中的 增加/删除 方法,导致并发修改异常。
    解决办法:
    A:不使用迭代器遍历集合,就可以在遍历的时候使用集合的方法进行增加或删除
    B:依然使用迭代器遍历,那么就需要使用Iterator的子接口ListIterator来实现向集合中添加

    迭代器也是用于遍历集合的。
    增强for循环也是可以用来遍历集合和数组的。

    List的特有功能

    void add(int index, E element) :将元素添加到index索引位置上
    E get(int index) :根据index索引获取元素
    E remove(int index) :根据index索引删除元素
    E set(int index, E element):将index索引位置的的元素设置为element

    LinkedList特有功能

    LinkedList底层使用的是链表结构,因此增删快,查询相对ArrayList较慢
    void addFirst(E e) :向链表的头部添加元素
    void addLast(E e):向链表的尾部添加元素
    E getFirst():获取链头的元素,不删除元素
    E getLast():获取链尾的元素,不删除元素
    E removeFirst():返回链头的元素并删除链头的元素
    E removeLast():返回链尾的元素并删除链尾的元素o

    工具类Collections和Collection没有半毛钱的关系!
    Collections的方法:

    • static void copy(List dest, List src) :是把源列表中的数据覆盖到目标列(复制集合)
      * static void fill(List list, Object obj) :使用指定的对象填充指定列表的所有元素
      * //static void reverse(List list) :反转
      * //static void shuffle(List list):傻否,随机置换
      * //static void sort(List list) :按照列表中元素的自然顺序进行排序
      * //static void swap(List list, int i, int j) :将指定列表中的两个索引进行位置互换

    作业斗地主的案例:

    题目:

    1. 组装54张扑克牌
    2. 将54张牌顺序打乱
    3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
    4. 查看三人各自手中的牌、底牌

    代码实现:
    public class DouDiZhuDemo {

    public static void main(String[] args) {
       List dpList = new ArrayList();
        String [] color = {"黑桃","红桃","梅花","方块"};
        String [] paizi = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        for (int i = 0; i < paizi.length; i++) {
            for (int j = 0; j < color.length; j++) {
                dpList.add(color[j] + paizi[i]);//这是添加每一张牌
            }
        }
        //添加大王,小王
        dpList.add("大王");
        dpList.add("小王");
    
        System.out.println(dpList);
        Collections.shuffle(dpList);
        System.out.println(dpList);
        Collections.shuffle(dpList);
        System.out.println(dpList);
    
    
        ArrayList wangyi = new ArrayList();
        ArrayList denger = new ArrayList();
        ArrayList tangsan = new ArrayList();
    
    
        for (int i = 0; i < dpList.size()-3; i++) {
            Object o = dpList.get(i);
            if(i%3==0){
                wangyi.add(o);
            }else if(i%3 == 1){
              denger.add(o);
            }else if (i%3==2){
                tangsan.add(o);
            }
        }
        System.out.println(wangyi.size());
        System.out.println(wangyi);
        System.out.println(denger.size());
        System.out.println(denger);
        System.out.println(tangsan.size());
        System.out.println(tangsan);
        List list = dpList.subList(dpList.size() - 3, dpList.size());
        System.out.println("最后三张底牌");
        System.out.println(list);
    
    }
    

    }

  • 相关阅读:
    盒子模型中问题
    outline
    高度自动相等方法
    正则表达式
    绝对定位 相对定位
    replace 使用函数作为第二参数
    float 浮动
    line-height 行高
    元素隐藏
    现代浏览器内部
  • 原文地址:https://www.cnblogs.com/cxrblog/p/13971095.html
Copyright © 2020-2023  润新知