Java集合框架

本文介绍了Java集合框架的基本概念,包括Collection、List、Set、Map等核心接口及其常见实现类,如ArrayList、HashSet、HashMap等,并提供了示例代码展示如何使用集合进行数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java集合框架
Java集合就是一种容器。我们可以将多个对象放进容器。Java中集合类定义主要是在java.util.*包下面。我们常用的集合类是Collection接口的子接口。如:Set, List, Queue等。Collection表示一组对象,这些对象我们可以称之为元素。一些collection允许有重复的元素,而有的则不行。有的是有序的,而另一些则是无序的。
Set 接口
Set 是最简单的一种集合。它的对象是不按照特定的方式排序。类似于我们平常数学里所说的集合,如我们可以说,班上的同学是一个集合,我所有的书是一个集合,但我们要特别注意的是,Set是一个不包含重复元素的collection。也就是说,如果在原来的set基础上,再添加一个set中已经有的元素,则原来的那个元素会被覆盖掉。所以利用这一特点,我们可以使用set来去掉重复的元素。并且它最多包含一个 null 元素
因为set 的特点是无序的,所以想要取出其中的元素就不是很方便了。我们不能通过下标来遍历它。而必须通过set对象得到Iterator的迭代器对象来遍历这个set。
HashSet,TreeSet,LinkedHashSet 是我们通常用到的它的子类。它不保证set的迭代顺序,特别是不保证顺序的恒久性。

List接口
List 是有序的collection,我们称之为序列。我们可以对列表中的每个元素的位置进行控制。也就是说,可以根据索引来访问元素。所以,它的元素是可以重复的。并且如果列表本身允许 null 元素的话,通常它们允许多个 null 元素。总的来说List是一个有序的并且允许出现重复的数据。List接口实现子类常用的有:ArrayList,LinkedList,Vector
Map接口
Map就是我们通常所说的映射,是将键(K)映射到值(V)的对象。比如,每个身份证对应一个人,每个学号对应一个学生,它是一一对应的。它的键是一个集合,所以一个映射不能包含重复的键;而每个键最多只能映射到一个值。 整体来说,就是K值不可以重复,而V值可以是相同的。并允许使用 null 值和 null 键 Map的常用HashMap,Hashtable,TreeMap, LinkedHashMap。


import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class mapt {
public static void main(String[] args){
//定义一个二维数组
int[] array={1,1,12,15,5,5,25,8,9,8,6,18,5,6,3,8,6,3};

HashMap<Integer,Integer> map=mapt.count(array);//统计次数
mapt.print(map);//遍历打印
HashSet<Integer> set=mapt.remove(array);//去掉重复
mapt.prin(set);//遍历去重复后的set
mapt.maopo(set);//排序
}
/**
* 统计数组中每个数出现的次数
* @param array 需要统计的数组
* @return 将结果用map<数字,次数>返回
*/
public static HashMap<Integer,Integer> count(int[] array){
//定义一个映射对象
HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();

//遍历数组
for(int i=0;i<array.length;i++){
int key=array[i];
if(map.containsKey(key)){//如果给数字出现过
int value=map.get(key); //得到它的value值
value++; //使它的value值+1
map.put(key,value); //将这种一一对应的关系存入map中
}
else {
map.put(key,1); //如果该数字没有出现过则将它的value值设为1
}
}
return map;}

/**
* 去掉重复
* @param array去重复之前的数组
* @return 返回去掉重复之后的set
*/
public static HashSet<Integer> remove(int[] array){
HashSet<Integer> set=new HashSet<Integer>();
for(int i=0;i<array.length;i++){
set.add(array[i]); //把数组中的所有元素存入set,通过set来去掉重复的元素
}
return set;
}

/**
*
* @param set将set中的元素排序
*/
public static void maopo(HashSet<Integer> set){
Integer[] array=(Integer[])set.toArray(new Integer[set.size()]);//将set中的元素存入数组中
for(int i=0;i<array.length;i++){ //使用冒泡法排序
for(int j=i+1;j<array.length;j++){
if(array[i]>array[j]){
int t=array[i];
array[i]=array[j];
array[j]=t;}
}
}
for(int i=0;i<array.length;i++){ //打印排好序的数组
System.out.println("第"+i+"个数是"+array[i]);
}
}
/**
* 打印去掉重复元素后的set
* @param set 需要打印的set
*/
public static void prin(HashSet<Integer> set){
Iterator<Integer> iter = set.iterator();
while(iter.hasNext()){ //是否有后继元素
int key=iter.next(); //得到k值
System.out.println(key+"-->>");
}
}

/**
*
* @param map需要打印的map
*/

public static void print(HashMap<Integer, Integer> map){
//得到key的set的集合
Set<Integer> keys=map.keySet();
//得到一个迭代器
Iterator<Integer> iter = keys.iterator();
while(iter.hasNext()){ //是否有后继元素
int key=iter.next(); //得到k值
int value=map.get(key); //根据k值得到v的值
System.out.println(key+"--出现 的次数为:->>"+value);
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值