java集合框架--List、Set、Map

本文详细介绍了Java集合框架中的List、Set和Map三种主要的数据结构,包括它们的特点、使用场景及基本操作方法。并通过具体示例展示了如何使用这些数据结构解决实际问题。

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

1.List:有序的 collection(也称为序列)。此接口可以对列表中每个元素的插入位置进行精确地控制。可以根据元素的在列表中的位置访问元素,并搜索列表中的元素。列表允许重复的元素。

   ArrayList:

   特点:有序的、线性的、无固定大小的、有下标的、先进先出

   简单操作应用:

public static void main(String args[]) {


		// 创建一个队列对象
		java.util.ArrayList<String> list = new java.util.ArrayList<String>();

		// 装入10个数据
		for (int i = 0; i < 10; i++) {
			String s = "元素" + i;
			//加元素
			list.add(s);
		}

		// 遍历1
		for (int i = 0; i < list.size(); i++) {
			// 根据下标取出一个元素
			String str = list.get(i);
			System.out.print(str+"\t");
		}
		
		System.out.println();
		
		//遍历2
		//得到队列的迭代器对象
		java.util.Iterator<String> iter = list.iterator();
		//判断是否有数据可以迭代
		while(iter.hasNext()){
			//取出一个元素
			String str = iter.next();
			System.out.print(str+"\t");
			
		}
		
		System.out.println();
		
		//遍历3
		for(String str:list){
			System.out.print(str+"\t");
		}

	}
   

 

2.Set:是简单的集合,它的对象不按特定方式排序,只是简单的把对象加入集合中。不能有重复对象。

 

   HashSet:

 

   特点:无序的,长度可变的,不可重复的

 

   简单的操作应用:

public static void main(String args[]) {

		// 创建一个容器对象
		java.util.HashSet<String> sets = new java.util.HashSet<String>();

		// 装入10个元素
		for (int i = 0; i < 10; i++) {
			String s = "元素a" + i;
			sets.add(s);
		}

		//检验若输入加入重复的元素,在集合中的是原来的还是新加入的(结果表明是原来的)
		boolean b = sets.add("新来的");
		boolean b1 = sets.add("新来的");
		System.out.println(b + "<>" + b1);
		// 遍历1
		// 得到迭代器对象
		java.util.Iterator<String> iter = sets.iterator();
		while (iter.hasNext()) {
			String str = iter.next();
			System.out.print(str + "\t");
		}
		
		System.out.println();
		
		//遍历2
		for(String str:sets){
			
			System.out.print(str+"\t");
		}

	}

 

 

3.Map:Map中存入的对象是一对一对的,即每个对象和它的一个名字(键:key)关联在一起,一个键(key)只能对应一个值(value),反则不然。

 

   HashMap:

 

   特点:无序的、不可重复的

 

   简单的操作应用:

public static void main(String args[]) {

		// 创建一个映射对象
		java.util.HashMap<Integer, String> maps = new java.util.HashMap<Integer, String>();

		// 装入键值对
		for (int i = 0; i < 20; i++) {

			int num = i * 1000;
			String name = "学生" + i;

			// 装入一个键值对
			maps.put(num, name);

		}
		
		//增加一个键值对,加入K相同的键值对,则会替换已经存在的键值对
		maps.put(30000, "新学生");
		maps.put(40000, "新学生");
		
		maps.put(40000, "又来一个");
		
		
		//遍历
		//得到K的Set集合
		java.util.Set<Integer> set = maps.keySet();
		//遍历K的集合,得到set的迭代器
		java.util.Iterator<Integer> iter = set.iterator();
		while(iter.hasNext()){
			//取出一个key
			int num = iter.next();
			//根据key得到对应的Value
			String name = maps.get(num);
			
			System.out.println(num+"\t"+name);
		}

 

 

 

两个应用:

1.package hpw.collection;

/**
 * 任意的一个数组,重复排序
 * 
 * @author 
 * 
 */
public class Task1 {

	public static void main(String args[]) {

		// 创建一个数组
		int[] array = new int[] { 133, 345, 467, 45, 786, 133, 456, 89, 45,
				299, 786, 467, 123, 456 };

		int[] temp = RemoveRepeat(array);
		// 出去重复后,打印数组
		for (int i = 0; i < temp.length; i++) {
			System.out.print(temp[i] + "\t");
		}
		
		System.out.println();
		
		int[] newarray = sort(temp);
		// 排序后,打印数组
		for (int i = 0; i < newarray.length; i++) {
			System.out.print(newarray[i] + "\t");
		}

	}

	/**
	 * 去除数组中重复的元素
	 * 
	 * @param base
	 *            :要去除的数组
	 * @return:去除重复后的数组
	 */
	public static int[] RemoveRepeat(int[] base) {

		// 创建一个集合
		java.util.HashSet<Integer> sets = new java.util.HashSet<Integer>();

		// 遍历数组,将元素装入集合
		for (int i = 0; i < base.length; i++) {

			int temp = base[i];
			// 将元素装入集合
			sets.add(temp);
		}


		//创建一个新的数组
		int[] newarry=new int[sets.size()];
		
		// 得到迭代器
		java.util.Iterator<Integer> ite = sets.iterator();
		
		// 遍历集合,将元素装入队列
		for (int i = 0; ite.hasNext(); i++) {

			newarry[i] = ite.next();
		}

		return newarry;
	}

	/**
	 * 将数组排序
	 * 
	 * @param base
	 *            :原数组
	 * @return:排序后的数组
	 */
	//冒泡排序
	public static int[] sort(int[] base){
		
		for(int i=0;i<base.length;i++){
			
			for(int j=i+1;j<base.length;j++){
				
				if(base[i]>base[j]){
					int temp=base[i];
					base[i]=base[j];
					base[j]=temp;
				}
			}
		}
		
		return base;
	}
}

 

    2.package hpw.collection;

import java.util.HashMap;

/**
 * 统计重复
 * @author lenovo
 *
 */
public class Task2 {
	
	public static void main(String args[]){
		
		// 创建一个数组
		int[] array = new int[] { 133, 345, 467, 45, 786, 133, 456, 89, 45,
				299, 786, 467, 123, 456,45 };
		
		//创建一个映射
		java.util.HashMap<Integer, Integer> map=new java.util.HashMap<Integer, Integer>();
		//统计
		map=count(array);
		//打印
		print(map);
		
	}

	/**
	 * 统计出现的次数
	 * @param base:原数组
	 * @return:java.util.HashMap<Integer:数组元素, Integer:出现的次数>
	 */
	public static java.util.HashMap<Integer, Integer> count(int[] base){
		//创建一个映射
		java.util.HashMap<Integer, Integer> maps=new java.util.HashMap<Integer, Integer>();
		
		//遍历数组,出现重复,value+1
		for(int i=0;i<base.length;i++){
			//判断是否出现重复
			if(maps.containsKey(base[i])){
				
				int value=maps.get(base[i])+1;
				maps.put(base[i], value);
			}else{
				
				maps.put(base[i], 1);
			}
		}
		
		return maps;
	}
	
	/**
	 * 打印队列
	 * @param map
	 */
	public static void print(HashMap<Integer, Integer> map){
		//创建一个集合,得到K的元素
		java.util.Set<Integer> set=map.keySet();
		
		//遍历集合,获得迭代器
		java.util.Iterator<Integer> ite=set.iterator();
		while(ite.hasNext()){
			//去除key
			int key=ite.next();
			//得到相应的value
			int value=map.get(key);
			
			System.out.println(key+"\t"+value);
		}
		
		
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值