`
ronaldoLY
  • 浏览: 42149 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

集合框架总结0719

阅读更多

     今天讲了集合框架。set算是一个最大容器,可以装任何东西(object),然后再往下分,就会有几种不同的容器方式,今天主要讲了3种:ArrayList,HashSet,

HashMap.

        ArrayList   线性,有下标,长度可变,有序的(先进先出),可重复的

        HashSet   非线性的,无下标的,不可重复的,无序的,长度可变的(它的不可重复性可以用来去掉数组中重复的数据)

        HashMap  是一个key和value的映射关系,key存在一个Set中,所以key是不能重复的,每一个key对应一个value,value是可重复的

       同时,还学到了3种遍历的方法,个人觉得第三种和第一种用起来比较方便。第一种就是直接通过for循环就行遍历,第三种是加强版的for循环? for(String str:list)  冒号前面是数组中的对象 冒号后面是这个数组。

      随后就是课堂练习,以前画图板,都是有老师的代码可以去仿照或者说是“抄”,这次让自己写,好像头绪理的不是很清。心里知道它是什么一个过程,但是不知道需要几个方法,参数是怎么传来传去的。这样很纠结啊。加上前面的排序法我还漏上过,今天又搞了一会排序法。所以这两个练习做的比较艰难了点。不过慢慢来嘛,不怕做的晚,就怕不做。感觉还是要多练吧。只能说练的还不够,看的懂跟会写还是两码事。以后要脱离抄代码的模式,尽量脱离老师的代码,自己重新设计,就算时间久点,也是自己的思路,以后慢慢形成一个体系。

      今天有一段代码还是需要理解下的

 

//遍历,方法3
		java.util.Iterator<Integer> iter=set.iterator();
		int[] arr = new int[set.size()];
		//定义一个计数器去遍历数组的下标
		int count=0;
		while(iter.hasNext()){
			int quchong=iter.next();
			//把取出来的元素存放到数组中
			arr[count]=quchong;
			count++;
			System.out.println(quchong);
		}
		return arr;
		
		
	}
 

      这是将一个随机数组去掉重复值的一个方法中的一段。去重复值,其实只需要遍历,然后打印,但是因为到后面我们需要用冒泡排序法,这里要传入进一个数组,其实就是这个地方遍历的一个数组,只是这里用的是一个迭代器,不能直接当做数组来用。所以,在循环中,我们顺带创建一个一维数组,讲取出来的元素存到这个数组中,即打印了不重复的元素,又返回了一个一维数组,方便下面使用。这一点好好理解下吧。

     package 集合框架练习;

import java.util.Random;

public class SetArray {
	// 申明一个公共的数组
	public java.util.ArrayList<Integer> Array;

	// 构造方法,构造一个随机数组
	public SetArray() {
		Array = new java.util.ArrayList<Integer>();
		// 创建一个随机数对象
		Random random = new Random();
		// 用for循环传入20个数
		for (int i = 0; i < 20; i++) {
			int a = random.nextInt(30);
			Array.add(a);
		}
		// 打印出随机数组
		for (int i = 0; i < 20; i++) {
			int a = Array.get(i);
			System.out.println(a);
		}
	}
	//去重复值的方法
	public int[] quchong(){
		//去重复,创建HashSet去重复
		java.util.HashSet<Integer> set = new java.util.HashSet<Integer>();
		for(int i=0;i<20;i++){
			set.add(Array.get(i));
		}
		//打印出来
		//遍历,方法3
		java.util.Iterator<Integer> iter=set.iterator();
		int[] arr = new int[set.size()];
		//定义一个计数器去遍历数组的下标
		int count=0;
		while(iter.hasNext()){
			int quchong=iter.next();
			//把取出来的元素存放到数组中
			arr[count]=quchong;
			count++;
			System.out.println(quchong);
		}
		return arr;
		
		
	}
	
	//冒泡排序法
		public int[] maopao(int[] a){
			for(int i=0;i<a.length;i++){
				for(int j=i+1;j<a.length;j++){
					if(a[i]>a[j]){
						int temp=a[i];
						a[i]=a[j];
						a[j]=temp;
					}
				}
			}
			return a;
		}	
	public static void main(String[] args){
		SetArray Array=new SetArray();
		System.out.println("----------------------------");
		int[] arr = Array.quchong();
		System.out.println("----------------------------");
		arr=Array.maopao(arr);
		for(int i=0;i<arr.length;i++){
			System.out.println(arr[i]);
		}
	}	
}
 

结果比较长,就不显示了。实际操作如果想好看点,在打印时可以不换行

 

package 集合框架练习;
/*
 * 2.给定任意字符串String str = "sadsadljsaljdlsajdlsajdlsajd";
 *  统计字符串中每个字符出现的次数
 * 思路:1.创建一个HashMap数组,字符对应的是key,字符出现的次数对应的是value
 *     2.利用String中的  charAt(int index) 方法返回指定索引处的 char 值。
 *       这样可以通过循环得到每一个字符,在存入到HashMap的key中,对应的value值可以先设为0,在循环中,
 *       继续对数组循环,就行判断,若出现字符相等情况,则value值加1。最后将key,value装入ShapeMap中
 *     3.最后遍历,用今天讲到的第三种方法来写,最后打印         
 */
import java.util.HashMap;
public class HashMapTest {
    public static void main(String[] args){
    	//先创建一个HashMap的对象
    	HashMap<Character,Integer> map=new HashMap<Character,Integer>();
    	//任取一段字符串
    	String str="sadadfdfgd阿safdafs哦额阿";
    	//String对象调用length方法,在API中可以查到,返回一个字符串长度
    	for(int i=0;i<str.length();i++){
    		int count=0;//计数器归0
    		char a=str.charAt(i);//得到第i个字符
    		for(int j=0;j<str.length();j++){
    			//在遍历一次String数组,如果有跟a相等的字符,则计数器加1
    			if(str.charAt(j)==a){
    				count++;
    			}
    		}
    		map.put(a, count);
//现在得到是一个HashMap数组,里面有对应的映射。直接遍历取出
    	}
    	java.util.Set<Character> keys=map.keySet();
    	//遍历数组key
    	for(char c:keys){
    		//根据K得到对应的V
    		int number=map.get(c);
    		System.out.println(c+"出现的次数是:"+number);
    	}  	
    	
    }		
	
}

 运行结果为:

 

f出现的次数是:4

g出现的次数是:1

d出现的次数是:5

哦出现的次数是:1

s出现的次数是:3

a出现的次数是:4

阿出现的次数是:2

额出现的次数是:1

 

 

 

反正今天挺纠结的。做的太慢了。希望以后每天一日一结。


分享到:
评论
1 楼 77tt77 2013-05-02  
字符串统计数字,效率很低。

一个字符出现几次,都要遍历一次,而且是重复操作。

最后先去重复,然后遍历。
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Java集合框架总结

    Java集合框架总结Java集合框架总结Java集合框架总结Java集合框架总结Java集合框架总结Java集合框架总结

    集合框架总结图

    该集合框架总结图 非常全面的将集合框架知识总结的清清楚楚。条理清晰。 对于集合框架不清晰的学者非常有用。

    Java集合框架使用总结

    Java集合框架使用总结 前言: 本文是对Java集合框架做了一个概括性的解说,目的是对Java集合框架体系有个总体认识,如果你想学习具体的接口和类的使用方法,请参看Java API文档。 一、概述 数据结构对程序设计...

    JAVA集合框架学习总结

    本文档为本人学习 java 集合框架期间的学习总结笔记,希望对新学习的朋友有所帮助和参考价值。本人java 开发时间不是太长,可能存在不完善或不对之处,欢迎指正!

    集合框架的总结

    集合的总结,集合的框架的介绍和父类子类之间关系以及

    集合框架大总结.xmind

    集合框架大总结.xmind

    corejava集合框架学习总结.pdf

    (六)集合框架学习总结.pdfcorejava集合框架学习总结.pdfcorejava集合框架学习总结.pdfcorejava集合框架学习总结.pdfcorejava集合框架学习总结.pdfcorejava集合框架学习总结.pdfcorejava集合框架学习总结.pdf

    java集合框架总结

    超详细的关于java 集合框架的总结!

    java集合框架图

    java集合框架图java集合框架图java集合框架图java集合框架图java集合框架图

    集合框架学习笔记

    集合框架学习笔记 https://mp.csdn.net/mdeditor/88970781#

    Java集合框架详解

    Java集合框架详解Java集合框架详解Java集合框架详解

    Java集合框架及泛型

    集合框架及泛型的介绍和基础理解,方便大家了解集合框架及泛型。

    《集合框架及泛型》

    BDQN ACCP 7.0 Java《集合框架及泛型》学习资料.part1

    JAVA集合框架学习思考+总结

    JAVA集合框架,java框架总结,java集合框架,java集合框架学习,java集合框架类

    6.java集合框架.zip

    6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6....

    java集合框架面试题

    内含大量java集合框架方面常被面试官问到的经典面试题。

Global site tag (gtag.js) - Google Analytics