`
hwfantasy
  • 浏览: 21565 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java的集合框架:set,list与map

阅读更多
  集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。今天我们主要学习了3中集合框架结构:即ArrayList,HashSet和HashMap.
  1.List接口(即ArrayList)
  List提供的是一个相对有序的集合,集合的长度可以自行改变,并且允许元素的重复
  ArrayList特点:线性,有序,长度可变,有下标。
  以下是ArrayList的实现及遍历
 
public static void main(String args[]) {

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

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

		// 第一种遍历法:使用其本身的方法
		for (int i = 0; i < list.size(); i++) {
			// 根据下标取出元素并装入
			String str = list.get(i);
			System.out.print(str + "\t");
		}

		System.out.println();

		// 第二种遍历法:使用迭代器
		java.util.Iterator<String> iter = list.iterator();
		// 判断是否有元素
		while (iter.hasNext()) {
			// 取出一个元素
			String str = iter.next();
			System.out.print(str + "\t");
		}

		System.out.println();

		// 第三种遍历法:增强for型循环
		for (String str : list) {
			System.out.print(str + "\t");
		}
	}

2.Set接口(即HashSet)
  Set接口提供的是一个无序的集合,他的对象不按特定的方式来排序,而仅仅是简单的将对象加入集合,所以它不允许重复对象的出现
  HashSet特点:无序,长度可变,不可重复
  以下是HashSet的实现及遍历
 
public static void main(String[] args) {
		// 创建一个HashSet对象  
		java.util.HashSet<String> sets = new java.util.HashSet<String>();  
		  
		// 装入10个数据  
		for (int i = 0; i < 10; i++) {  
		    String s = "元素" + i;  
		    sets.add(s);  
		}  
		  
		//输入重复的元素,用于检验他的不可重复性,并用add()方法的返回值来观察是否装入了重复的元素  
		boolean b = sets.add("元素2"); 
		boolean b1 = sets.add("元素10");
		System.out.println(b + "<>" + b1);  
		//第一种遍历法:使用迭代器  
		java.util.Iterator<String> iter = sets.iterator();  
		while (iter.hasNext()) {  
		    String str = iter.next();  
		    System.out.print(str + "\t");  
		}  
		  
		System.out.println();  
		  
		// 第二种遍历法:增强for循环
		for(String str:sets){  	      
		    System.out.print(str+"\t");  
		}  

	}

3.Map接口(HashMap)
  Map提供的是一个映射的对应关系的集合,由一对对键值对组成,其中key值不能重复,而value可以。且当输入的有相同的key时,会进行替换
  HashMap特点:无序,key不可重复
  以下是HashMap的实现及遍历
 
// 创建一个HashMap对象  
		java.util.HashMap<Integer, String> maps = new java.util.HashMap<Integer, String>();  
		  
		// 装入一个键值对  
		for (int i = 0; i < 10; i++) {  
		    int num = i;  
		    String name = "学生" + i;    
		    maps.put(num, name);  	  
		}  
		  
		//增加一个键值对,加入K相同的键值对,则会替换已经存在的键值对  
		maps.put(10, "学生5");  
		maps.put(4, "新学生");     
		    
		//遍历 方法:迭代器 
		//得到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去重复排序的类
public class uniqueorder {

	int i = 0;
	int[] orderarray = new int[i];
	
	//用于添加数组元素的方法
	public void add(int a){
		int[] addarray = new int[i+1];
		for(int j=0;j<i;j++){
			addarray[j]=orderarray[j];
		}
		addarray[i] = a;
		orderarray = addarray;
		i++;
	}
	//操作数组使其去重复并排序,并返回现有的数组大小
	public int operate(){
		int j=0;
		//创建set对象(即去重复)
		java.util.HashSet<Integer> hset = new java.util.HashSet<Integer>();
		for(int a=0;a<i;a++){
			hset.add(orderarray[a]);
		}
		//创建迭代器对象遍历(将去重复后的数组赋予orderarray)
		java.util.Iterator<Integer> iter = hset.iterator();
		while(iter.hasNext()){
			int k = iter.next();
			int[] iterarray = new int[j+1];
			for(int a=0;a<j;a++){
				iterarray[a]=orderarray[a];
			}
			iterarray[j] = k;
			orderarray =iterarray;
			j++;
		}
		//排序过程(冒泡法)
		for(int a=0;a<j;a++){
			for(int b=j-1;b>a;b--){
				if(orderarray[b]<orderarray[b-1]){
					int temp=orderarray[b-1];
					orderarray[b-1]=orderarray[b];
					orderarray[b]=temp;
				}
			}
		}
		return j;
	}
	
	//依照给出的下标弹出数组中元素的方法(从数组开始到数组末尾)
	public int pop(int index){
		
		int v=orderarray[index];
		return v;
	}
	
}

2统计重复字数的类
public class countrepeat {

	int i = 0;
	int[] orderarray = new int[i]; 
	
	//用于添加数组元素的方法
	public void add(int a){
		int[] addarray = new int[i+1];
		for(int j=0;j<i;j++){
			addarray[j]=orderarray[j];
		}
		addarray[i] = a;
		orderarray = addarray;
		i++;
	}
	
	//操作数组统计重复的元素数并遍历显示
	public void operate(){

		//创建hashmap对象
		java.util.HashMap<Integer, Integer> hmap = new java.util.HashMap<Integer, Integer>();
		//创建set对象(即去重复)
		java.util.HashSet<Integer> hset = new java.util.HashSet<Integer>();
		for(int a=0;a<i;a++){
			hset.add(orderarray[a]);
			if(!hmap.containsKey(orderarray[a])){
				hmap.put(orderarray[a], 1);
			}else if(hmap.containsKey(orderarray[a])){
				int v=hmap.get(orderarray[a])+1;
				hmap.put(orderarray[a], v);
			}
		}
		//创建迭代器对象遍历
		java.util.Iterator<Integer> iter = hset.iterator();
		while(iter.hasNext()){
			int k = iter.next();
			int v = hmap.get(k);
			System.out.println(k+"\t"+v);
		}
	}
	
}

3测试类
public static void main(String[] args) {
		//给予一个数组
		int[] testarray = {2,34,5,25,1,34,5,76,37,9};
		
		//创建对象
		uniqueorder uo = new uniqueorder();
		countrepeat cr = new countrepeat();
		//将数组装入
		for(int i=0;i<10;i++){
			uo.add(testarray[i]);
			cr.add(testarray[i]);
		}
		int k=uo.operate();
		for(int i=0;i<k;i++){
			System.out.print(uo.pop(i)+"\t");
		}
		System.out.println();
		System.out.println("-----------------------");
		cr.operate();
	}

答案为
1 2 5 9 25 34 37 7
-----------------------
34 2
1 1
2 1
5 2
37 1
76 1
25 1
9 1
分享到:
评论

相关推荐

    Java 集合框架深度解析:List、Set 和 Map 的差异与应用

    本文将深入探讨 Java 集合框架,并详细分析 List、Set 和 Map 之间的区别及其应用场景。 Java 集合框架是 Java 程序设计中不可或缺的一部分,它提供了灵活、高效的方式来处理数据集合。List、Set 和 Map 作为集合...

    Java集合框架深度解析:Map, List, Set

    深入的洞察到Java集合框架的核心组件:Map, List, 和 Set。首先,深入分析了HashMap的内部结构,包括它的数组+链表+红黑树的数据结构。重要的是理解如何处理并发问题,特别是在Java 8中对HashMap的优化,如高低位...

    Java集合:Collection、List、Set、Map使用详解

    本文将深入探讨Java集合框架中的四个主要接口:Collection、List、Set和Map,以及它们的实现原理。 ### 集合框架概述 集合框架是Java API中用于存储和管理对象的统一框架。它为数据结构提供了抽象接口,使得程序员...

    Java集合框架的内部揭秘:List、Set与Map的深潜之旅

    ### Java集合框架的内部揭秘:List、Set与Map的深潜之旅 #### 一、List:有序序列的深度剖析 **List** 接口在Java集合框架中扮演着至关重要的角色,它是一种允许包含重复元素的有序集合。这种类型的集合非常适合...

    Java集合Collection、List、Set、Map使用详解编程资料

    Java集合Collection、List、Set、Map使用详解

    集合框架List、Map、Set接口及其子类综合对比

    Java基础知识汇总之集合框架List、Map、Set接口及其子类综合对比

    深入探索Java集合框架:解密复杂的面试题和精准解析

    本文将深入探讨Java集合框架的核心概念,包括List、Set、Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类,帮助你理解和解决面试中的相关问题。 1. **List和Set的区别及应用场景** - **List** 是...

    Java集合Collection、List、Set、Map使用详解.pdf

    Collection接口是Java集合框架的根接口,定义了基本的集合操作,而List接口和Set接口继承自Collection接口,提供了有序和无序的集合操作。Map接口提供了键值对的存储和操作。 Java集合框架是Java语言中最基本也是最...

    Java集合框架常见面试题.pdf

    总结来说,Java集合框架为开发者提供了丰富的数据结构以应对不同场景的需要,从简单的List和Set到复杂的Map结构,再到线程安全的集合实现,每个组件都有其特定的用途和优势。在面试中,理解并能够熟练运用这些集合类...

    Java集合框架图

    Java集合List集合Set集合Map集合Collection和collections工具类的框架图

    Java集合框架详解

    本文将深入解析Java集合框架的各个方面,包括Collection、List、Set和Map,以及它们的相关实现和使用原理。 **1. 集合框架概述** 集合框架是一个统一的数据结构和算法的集合,它提供了对数据进行高效处理的工具。...

    集合概述set、List、Map

    Java集合框架主要包括以下几种容器: - **Collection**:这是所有单列集合的根接口,包括List、Set等。 - **Set**:这是一个不允许重复元素的集合。 - **List**:这是一个有序的集合,允许重复元素,并且可以通过...

    java集合框架图

    在Java集合框架中,主要有六种核心接口:`Collection`, `Set`, `List`, `Queue`, `Deque`, 和 `Map`。此外,还有五个抽象类以及多个实现类,它们共同构成了Java集合框架的基础。 #### 二、核心接口介绍 1. **`...

    精通java集合框架--List,Set..

    ### 精通Java集合框架——List, Set, Map #### 概述 Java集合框架是一种高度抽象且灵活的数据组织工具,它通过一系列接口来定义不同类型的数据容器,并提供了丰富的操作这些容器的方法。本文将深入探讨Java集合...

    Java集合框架(JCF:Java Collections Framework)之概述

    Java 集合框架的组成部分包括 Collection、List、Set、Map 等接口,ArrayList、LinkedList、HashSet、HashMap 等实现,和各种算法,如查找、排序等。这些组成部分可以帮助程序员更方便地使用集合,提高程序的速度和...

    Java 后端资源:Java 集合框架.docx

    ### Java集合框架详解 #### 一、概述 Java集合框架为开发者提供了一套全面且功能强大的工具集,用于处理各种不同类型的数据集合。该框架的设计旨在提高程序的开发效率及运行时的性能。它包含了多种接口、类以及...

    JAVA集合(List,Set,Map)

    Java集合框架是Java编程语言中处理数据组织的核心部分。它提供了一系列接口、抽象类和具体实现类,帮助开发者有效地管理对象集合。本篇文章将深入探讨集合框架中的三大核心组件:`List`、`Set`以及`Map`,并通过具体...

    Java集合框架总结

    ### Java集合框架总结 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...

    Java Android开发:深入解析Java集合框架及其应用场景

    内容概要:本文详细介绍了Java集合框架的重要性和在Android开发中的应用。首先,阐述了集合框架的基本概念,包括接口(Collection、Set、List、Map)和其实现类(ArrayList、LinkedList、HashSet、TreeSet、HashMap...

Global site tag (gtag.js) - Google Analytics