`
hwfantasy
  • 浏览: 21044 次
  • 性别: 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集合Collection、List、Set、Map使用详解编程资料

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

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

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

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

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

    Java集合框架图

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

    JAVA集合(List,Set,Map)

    Java 2集合框架图 集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。 抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。 实现类:8个实现类(实线表示),...

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

    这种差别的原因与 Set 和 Map 在 Java 库中使用的方法有关。Map 的典型应用是访问按关键字存储的值。它支持一系列集合操作的全部,但操作的是键-值对,而不是单个独立的元素。因此 Map 需要支持 get() 和 put() 的...

    Java集合排序及java集合类详解(Collection、List、Map、Set)讲解.pdf

    Java集合排序及java集合类详解(Collection、List、Map、Set)讲解 ...本文详细解释了Java集合框架的实现原理、Collection、List、Set、Map四大类的使用方法和原理,为读者提供了详细的Java集合框架知识点。

    java集合框架笔记

    List set ArraryList Map java集合框架笔记 基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用

    Java集合排序及java集合类详解(Collection、List、Map、Set).pdf

    Java集合框架主要包括Collection、List、Set、Map四个接口,它们分别实现了不同的数据结构。 Collection接口是Java集合框架的顶层接口,它定义了基本的集合操作,如add、remove、contains等。Collection接口有两个...

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

    Java 集合框架的主要组件包括 Collection、List、Set、Map 等。 1.1 容器简介 容器是指可以存储对象的对象。 Java 集合框架中有多种类型的容器,每种容器都有其特点和用途。常见的容器有 Collection、List、Set、...

    Java-Java集合体系-List-Set

    Java-Java集合体系-List-Set 内容概要:总结了Java集体体系中的三大集合接口LIst、Set、Map,本文对LIst、Set做出了详细、简要的分析,没有冗长的文章,全是干货,下载即用,其中涉及了其底层实现,面试题必备。 ...

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

    Java集合框架常见面试题 Java 集合框架概述 Java 集合框架是 Java 语言中提供的一种数据结构,用于存储和操作数据。它提供了多种集合类,包括 List、Set、Map 等,每种集合类都有其特点和用途。 List 集合 List...

    第03章.java集合框架.ppt

    Java 集合框架知识点总览 Java 集合框架是 Java 语言中提供的一种处理集合的机制,它提供了一种灵活、可靠、可扩展的方式来存储和操作对象的集合。在本章节中,我们将详细介绍 Java 集合框架的主要组成部分、使用...

    Java集合框架常见面试题

    Java集合框架常见面试题 剖析⾯试最常⻅问题之 Java 集合框架 包含以下几个模块: 1、集合概述 2、Collection子接口之List 3、Collection子接口之Set 4、Map接口 5、Collection工具类 6、其他重要问题

    Java集合排序及java集合类详解(Collection、List、Map、Set).doc

    Java集合排序及java集合类详解(Collection、List、Map、Set) Java 中的集合框架是 Java 语言中最重要和最常用的部分之一。它能够帮助开发者更方便地处理和存储数据,从而提高编程效率和程序的可读性。本文将详细...

    Java集合框架总结

    Java集合框架汇总 1.集合框架结构图 1 2.两种特殊的Java容器类List和Set分析 2 3. Collection 接口: 2 4.Iterator 接口: 3 5.List接口: 3 5.1 LinkedList类: 5 5.2 ArrayList类: 5 6.Set接口: 5 7.Map...

    java集合框架专题-java面试经典

    java集合框架专题-java面试经典, 涉及List set Map 等相关知识

    java集合框架

    list set map list set map list set map

    java集合框架习题与答案.doc

    Java 集合框架习题与答案 Java 集合框架是 Java 语言中的一组接口和类,用于存储和操作数据。Collection 接口是集合框架的根接口,定义了基本的操作方法,如添加、删除、遍历等。Collection 接口的子接口有 List ...

Global site tag (gtag.js) - Google Analytics