Java的编程之旅45——Collection集合

在此之前我们引出了ArrayList集合。了解了集合的一些常用方法。

Java中的Collection集合是一种用于存储和操作多个对象的容器。集合提供了一组接口和类,用于表示和操作不同类型的集合。

Java中的Collection接口是所有集合类的根接口,它定义了一些常见的方法,如添加元素、删除元素、判断集合是否为空、获取集合大小等。常用的集合类有List、Set和Map。

List是一种有序的集合,可以包含重复元素。常见的List实现类有ArrayList和LinkedList。

Set是一种不允许重复元素的集合,它没有顺序。常见的Set实现类有HashSet和TreeSet。

Map是一种键值对的映射表,每个键对应一个值,键不允许重复。常见的Map实现类有HashMap和TreeMap。

除了以上常见的集合类,Java还提供了一些其他集合类,如Queue、Deque等。

可以使用集合类来方便地操作和管理多个对象,集合类提供了丰富的方法和功能,可以满足不同场景下的需求。需要注意的是,集合类中只能存储对象,不能存储基本数据类型,可以使用包装类来存储基本数据类型的值。

1.collection集合的常用方法

1.add方法

Collection<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
list.add("pear");
System.out.println(list);//输出结果[apple, banana, orange, pear]

创建了一个ArrayList<String>对象,并将其赋给名为list的变量。这个集合是用来存储字符串类型的元素。接下来,我们使用add()方法向集合中添加了四个元素。。

2.remove方法

System.out.println(list.remove("pear"));

代码list.remove("pear")从列表中移除元素"pear",如果存在的话,并返回true。如果列表中不存在该元素,则返回false

3.clear方法(慎用)

list.clear();

list.clear() 是一个列表的方法,用于清空列表中的所有元素,使列表变为空列表。

具体来说,list.clear() 在执行后会将列表中的所有元素删除,使列表变空。这个方法没有返回值,它只是直接修改原始的列表。

4.isEmpty方法

 System.out.println(list.isEmpty());

list.isEmpty() 是一个列表的方法,它用于判断列表是否为空。如果列表为空,则返回true;如果列表不为空,则返回false

5.contain方法

System.out.println(list.contains("apple"));

它用于判断列表中是否包含指定的元素,这里的指定元素是字符串"apple"。如果列表中包含该元素,则返回true;如果列表中不包含该元素,则返回false

6.size方法

System.out.println(list.size());

它返回列表中元素的数量。这里的list是一个列表对象,.size()是调用列表对象的方法来获取列表的大小。

2.小栗子

一个随机双色球彩票生成器 

双色球中红球33个,蓝球16个

1.集合形式 

public class lotteryTicket {
    public static void main(String[] args) {
        Random ran = new Random();
        int blueBall = ran.nextInt(16)+1;
        ArrayList<Integer> redBall = new ArrayList<>();
        int counts = 0;
        while (redBall.size()<6){
            counts++;
            int rb = ran.nextInt(33)+1;
            if (!redBall.contains(rb)){
                redBall.add(rb);
            }
        }
        Collections.sort(redBall);
        System.out.println("红球:"+redBall+"| 篮球:["+blueBall+"]");
        System.out.println("一共生成了"+counts+"次红球");
    }
}

创建了一个 Random 对象 ran,用于生成随机数。

然后,通过 ran.nextInt(16) + 1 生成了一个 1 到 16 之间的随机整数作为篮球数字,并将其存储在 blueBall 变量中。

接着,创建了一个 ArrayList 来存储红球数字 redBall,并初始化计数器 counts 为 0。

在一个 while 循环中,不断生成 1 到 33 之间的随机整数 rb。只有当 redBall 列表中不包含这个生成的 rb 时,才将其添加到列表中。每次循环都会增加计数器 counts,以记录生成红球数字的尝试次数。当 redBall 列表的大小达到 6 时,循环结束。

最后,使用 Collections.sort(redBall) 对红球数字列表进行排序,并通过 System.out.println 输出红球数字列表、篮球数字以及生成红球数字的总次数。

2.数组形式

public class lotteryTicketArrModel {
    public static void main(String[] args) {
        Random ran = new Random();
        int blueBll = ran.nextInt(16)+1;
        int[] redBall = new int[6];
        for (int i = 0,j; i < 6; i++) {
            int rb = ran.nextInt(33)+1;
            for (j = 0; j < redBall.length; j++) {
                if(rb == redBall[j]){
                    i--;
                    break;
                }
            }
            if(!(j<i)){
                redBall[i] = rb;
            }
        }
        for (int i = 0; i < redBall.length - 1; i++) {
            for (int j = 0; j < redBall.length - i - 1; j++) {
                if (redBall[j]>redBall[j+1]){
                    redBall[j] ^= redBall[j+1];
                    redBall[j+1] ^= redBall[j];
                    redBall[j] ^= redBall[j+1];
                }
            }
        }
        System.out.println("红球:"+Arrays.toString(redBall)+"蓝球:["+blueBll+"]");
    }
}

首先创建了一个Random对象ran用于生成随机数。然后,使用ran对象生成一个范围为1-16的随机数作为蓝球的值。

接下来,创建了一个长度为6的整型数组redBall用于存储红球的值。使用for循环遍历数组,每次生成一个范围为1-33的随机数作为红球的值。

在生成红球的过程中,使用了一个内层循环遍历已生成的红球数组,判断新生成的红球是否已存在于数组中。如果存在,则通过将外层循环索引i减一的方式重新生成该红球,否则将该红球赋值给数组。

生成完所有的红球后,使用另外一个for循环对红球数组进行冒泡排序。通过比较相邻元素的大小,将较大的元素往后移动,从而实现数组的升序排列。

最后,使用Arrays类的toString方法将红球数组转换为字符串并输出,同时输出生成的蓝球的值。

3.迭代器

在Java中,迭代器(Iterator)是一个接口,可用于遍历集合类(如List、Set和Map)中的元素。它提供了一种统一的遍历方式,无需了解集合类的内部实现细节。

迭代器主要包含以下几个常用方法:

  1. boolean hasNext():判断集合中是否还有下一个元素可以遍历,如果有则返回true,否则返回false。
  2. E next():获取集合中的下一个元素,并将迭代器指针移动至下一个位置。
  3. void remove():从集合中移除迭代器最后访问过的元素(可选操作)。

使用迭代器可以在遍历集合时,动态地获取集合中的元素,并可以在遍历过程中对集合进行修改(通过remove方法)。可以使用while循环和迭代器的hasNext和next方法来遍历集合中的所有元素,如下所示:

Collection<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
list.add("pear");

Iterator<String> it = list.iterator();
while (it.hasNext()){
   System.out.println(it.next());
}

在上述代码中,我们创建了一个ArrayList集合,并向其中添加了三个元素。然后,通过调用集合的iterator方法获取到迭代器对象。在while循环中,通过调用迭代器的hasNext方法判断集合中是否还有下一个元素,如果有则调用next方法获取下一个元素并输出。循环直到集合中所有元素都被遍历完毕。

需要注意的是,迭代器一般是单向移动的,即只能向前遍历集合中的元素,不能后退或重新开始遍历。如果需要多次遍历集合,可以重新获取迭代器对象。另外,迭代器不是线程安全的,如果在多个线程中同时操作迭代器,可能会导致异常或意外的结果。

  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惊爆点大男主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值