JAVA基础(十四)——集合框架,泛型

28 篇文章 5 订阅
  1. 集合框架
    集合类:
    为什么会出现集合类?
    面向对象对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储最常用的一种方式。
    数组和集合类同是容器,有何不同?
    数组虽然也可以存储对象,但长度是固定的;集合长度是可变的,数组中可以存储基本数据类型,集合只能存储对象。+
    集合类的特点?
    集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    根接口常用方法:
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    遍历集合:
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Bianli {
    public static void main(String[] args) {
        //创建集合对象
        Set<String> set = new HashSet<>();

        //添加元素对象
        set.add("hello");
        set.add("world");
        set.add("java");

        //遍历集合对象

        //方法1:转数组
        //method1(set);

        //方式2:迭代器
        //method2(set);

        //方式3:增强for
        method3(set);
    }

    public static void method3(Set<String> set) {
        for(String s : set){
            System.out.println(s);
        }
    }

    public static void method2(Set<String> set) {
        Iterator<String> it = set.iterator();
        while(it.hasNext()){
            String s = it.next();
            System.out.println(s);
        }
    }

    public static void method1(Set<String> set) {
        Object[] objs = set.toArray();
        for(int i = 0; i < objs.length; i++){
            System.out.println(objs[i]);
        }
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
注意:不使用集合去修改,而是用迭代器去操作,就不会发生并发修改异常

在这里插入图片描述
在这里插入图片描述

  1. 泛型. 在这里插入图片描述
    在这里插入图片描述
    foreach循环
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    几种常见的数据结构:
    在这里插入图片描述
    在这里插入图片描述
    队列:先进先出
    栈:先进后出

在这里插入图片描述在这里插入图片描述

自己根据集合方法实现
在这里插入图片描述
在这里插入图片描述

JavaAPI实现:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

面试题:Collection和Collections有什么区别?
	   Collection是集合体系的最顶层,包含了集合体系的共性
	   Collections是一个工具类,方法都是用于操作Collection

模拟斗地主发牌:

import java.util.ArrayList;
import java.util.Collections;

public class DouDIZhu {
    public static void main(String[] args) {
        String[] color = {"♥","♦","♠","♣"};
        String[]  num = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};

        ArrayList<String> box = new ArrayList<>(54);
        for(int i = 0; i < color.length; i++)
        {
            for(int j = 0; j < num.length; j++)
                box.add(color[i] + num[j]);
        }
        box.add("小王");
        box.add("大王");

        ArrayList<String> ZhangSan = new ArrayList<>();
        ArrayList<String> LiSi = new ArrayList<>();
        ArrayList<String> WangEr = new ArrayList<>();
        //洗牌
        Collections.shuffle(box);
        //发牌
        for(int i = 0; i < box.size(); i++)
        {
            if(i % 3 == 0)
            {
                ZhangSan.add(box.get(i));
            }
            else if(i % 3 ==1)
            {
                LiSi.add(box.get(i));
            }
            else
                WangEr.add(box.get(i));
        }

        System.out.println(ZhangSan);
        System.out.println(LiSi);
        System.out.println(WangEr);

        System.out.print("底牌是:");

        System.out.print(box.get(box.size()-3) +",");
        System.out.print(box.get(box.size()-2) +",");
        System.out.print(box.get(box.size()-1));
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值