【Java】之集合总结(上)

简介: 用来存储不同类型的多个对象的一些特殊类的统称为集合,可以简单的理解为存储不同数据类型的动态数组(因为数组的长度是一定的,而集合长度是可以改变的)。核心接口:Collection、List、Set、Map。

一、集合概述
用来存储不同类型的多个对象的一些特殊类的统称为集合,可以简单的理解为存储不同数据类型的动态数组(因为数组的长度是一定的,而集合长度是可以改变的)。核心接口:Collection、List、Set、Map。

二、Collection接口
Collection接口是Java单列集合中的根接口,在某种定义上可以把Collection看成是动态的数组,一个对象的容器,通常把放入Collection中的对象称为元素。

1.Collection接口的声明
public interface Collection
2.Collection接口的方法
public boolean add(Object o)

功能描述:向当前集合中添加一个元素

public boolean addAll(Collection c)

功能描述:将集合c中所有元素添加给此集合

public void clear()

功能描述:删除集合中的所有元素

public boolean contain(Object o)

功能描述:查找集合中是否含有对象o

public boolean containsAll(Collection c)

功能描述:查找集合中是否含有集合c中的所有元素

public boolean equals(Object o)

功能描述:判断集合是否等价

public boolean isEmpty()

功能描述:判断集合中是否有元素

public boolean remove(Object o)

如果集合中有与o相匹配的对象,就删除对象o

public Iterator iterator()

返回一个迭代器,用于访问集合中的各个元素

public int size()

功能描述:返回当前集合中元素数量

三、List接口
List是Collection的子接口,继承了Collection接口的全部方法,还添加了一些特有方法。

1.List接口的声明
public interface List extends Collection

2.List接口的方法
public void add(int index,Object element)

功能描述:在指定位置index上添加元素element

public Object get(int index)

功能描述:返回列表中指定位置的元素

public int indexOf(Object o)

功能描述:返回第一次出现元素o的位置,否则返回-1

public int indexOf(Object o)

功能描述:返回最后一次出现元素o的位置,否则返回-1

public Object remove(int index)

功能描述:删除指定位置上的元素

public Object set(int index,Object element)

功能描述:用元素element代替index位置上的元素

3.举例
随机生成7个36以内的数并存入list集合中

代码

package test3;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
 
public class test3 {
    public static void main(String[] args) {
        Random r=new Random();
        List<Integer> list=new ArrayList<Integer>();
        int count=0;
        while(count<7) {
            int num=r.nextInt(36)+1;
            if(!list.contains(num)) {
                list.add(num);
                count++;
            }
            }
        System.out.println("36选7摇号如下:");
            for (Integer integer : list) {
                System.out.print(integer+"\t");
            }
        }
}

执行结果
image.png

四、Set接口
Set的方法与Collection接口的方法基本一致,Set元素无序且不重复

HashSet
HashSet是Set接口的一个实现类,为了去掉重复元素需要重写hashCode()和equals()方法

举例
随机生成7个36以内的数并存入HashSet集合中

代码

package test8;
 
import java.util.HashSet;
 
public class test8 {
    public static void main(String[] args) {
        HashSet<Integer> set=new HashSet<>();//注意Integer里的I是大写的
        System.out.println("36选7摇号如下:");
        while(set.size()<7) {
            int num=(int)(Math.random()*36)+1;//(int)不要忘记
            set.add(num);
        }
        for (Integer integer : set) {
            System.out.print(integer+"\t");
        }
    }
}

执行结果
image.png

相关文章
|
25天前
|
存储 安全 Java
Java 集合框架中的老炮与新秀:HashTable 和 HashMap 谁更胜一筹?
嗨,大家好,我是技术伙伴小米。今天通过讲故事的方式,详细介绍 Java 中 HashMap 和 HashTable 的区别。从版本、线程安全、null 值支持、性能及迭代器行为等方面对比,帮助你轻松应对面试中的经典问题。HashMap 更高效灵活,适合单线程或需手动处理线程安全的场景;HashTable 较古老,线程安全但性能不佳。现代项目推荐使用 ConcurrentHashMap。关注我的公众号“软件求生”,获取更多技术干货!
41 3
|
3月前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。HashSet基于哈希表实现,提供高效的元素操作;TreeSet则通过红黑树实现元素的自然排序,适合需要有序访问的场景。本文通过示例代码详细介绍了两者的特性和应用场景。
60 6
|
3月前
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
56 3
|
3月前
|
存储 Java 数据处理
Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位
【10月更文挑战第16天】Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位。本文通过快速去重和高效查找两个案例,展示了Set如何简化数据处理流程,提升代码效率。使用HashSet可轻松实现数据去重,而contains方法则提供了快速查找的功能,彰显了Set在处理大量数据时的优势。
48 2
|
1月前
|
存储 缓存 安全
Java 集合江湖:底层数据结构的大揭秘!
小米是一位热爱技术分享的程序员,本文详细解析了Java面试中常见的List、Set、Map的区别。不仅介绍了它们的基本特性和实现类,还深入探讨了各自的使用场景和面试技巧,帮助读者更好地理解和应对相关问题。
49 5
|
2月前
|
存储 缓存 安全
Java 集合框架优化:从基础到高级应用
《Java集合框架优化:从基础到高级应用》深入解析Java集合框架的核心原理与优化技巧,涵盖列表、集合、映射等常用数据结构,结合实际案例,指导开发者高效使用和优化Java集合。
59 4
|
2月前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
2月前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
53 2
|
2月前
|
存储 Java
判断一个元素是否在 Java 中的 Set 集合中
【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
|
2月前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。