Java可变参数与集合框架详解

需积分: 9 0 下载量 43 浏览量 更新于2024-08-18 收藏 502KB PPT 举报
"Java基础中的可变参数和集合框架知识" 在Java编程中,可变参数是一种灵活的方法调用机制,允许我们传递不确定数量的参数。它使得方法的参数列表可以根据实际传入的参数动态变化。可变参数的声明格式如下: ```java 修饰符 返回值类型 方法名(数据类型...变量名) {} ``` 例如,一个简单的可变参数方法`sum`用于计算整数之和可以这样定义: ```java public static void sum(int... i) { // 这里可以使用数组i来处理任意数量的整数 } ``` 在这个例子中,`int... i`表示`i`是一个整数类型的可变参数,实际上它会被编译成一个整数数组。需要注意的是: 1. 可变参数可以看作是一个隐含的数组,可以在方法内部像处理数组一样处理这些参数。 2. 如果一个方法有多个参数,可变参数必须是参数列表的最后一个。 3. 一个方法不能有多个可变参数。 接下来,我们转向Java集合框架。集合框架包括`Collection`、`List`、`Set`和`Map`等接口及其实现类。`Collection`是所有单列集合的父接口,提供了添加、删除、遍历元素的基本操作。 例如,`ArrayList`和`LinkedList`是`List`接口的实现,它们都继承自`Collection`。`ArrayList`基于数组实现,适合于随机访问;而`LinkedList`使用链表结构,插入和删除操作更高效。在遍历`LinkedList`时,由于其特性,使用`Iterator`通常比`for-each`循环更合适,因为它可以直接操作头结点和尾节点。 `Set`接口代表不允许重复元素的集合,它的方法主要来源于`Collection`。其中,`HashSet`是基于哈希表实现的,它保证元素的唯一性。哈希表是一个数组,每个元素都是一个链表,元素的位置由其哈希值决定(哈希值是`int`类型,非内存地址)。当我们向`HashSet`中添加元素时,会根据元素的哈希值计算出数组索引,然后将元素放入对应的链表中。如果两个元素哈希值相同,则通过equals方法来判断是否真正相同,确保唯一性。 `TreeSet`是另一种`Set`实现,它使用红黑树数据结构,能按特定顺序(默认是自然顺序或自定义比较器)存储和排序元素。在处理如学生信息(姓名、数学成绩、语文成绩)这样的数据时,我们可以利用`TreeSet`的排序功能,按总分或者额外的规则进行排序。 对于练习1和练习2,我们可以创建`TreeSet<Student>`,其中`Student`类包含姓名、数学成绩和语文成绩,并重写`compareTo`方法,根据总分和姓名进行比较。这样,`TreeSet`会自动按指定的排序规则存储学生信息。 理解可变参数和集合框架对于编写高效、灵活的Java代码至关重要。通过熟练掌握这些概念,我们可以更好地组织和操作数据,满足各种复杂的需求。