`
ronaldoLY
  • 浏览: 43627 次
  • 性别: 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集合框架总结

    ### Java集合框架总结 在Java编程中,集合框架(Collections Framework)是处理数据的重要工具集,它提供了一系列接口和类来存储、操作和检索不同类型的元素。本文将深入解析Java集合框架的关键知识点,涵盖其核心...

    java集合框架图

    ### Java集合框架详解 #### 一、Java集合框架概述 Java集合框架是Java标准库的重要组成部分,它提供了存储和操作对象的各种数据结构。通过使用集合框架,开发人员可以轻松地管理不同类型的数据集,并且能够利用...

    《集合框架及泛型》

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

    学士后Java集合框架和泛型课后习题答案

    Java集合框架是Java编程语言中的一个核心组成部分,它为数据存储和操作提供了丰富的类库。在Java中,集合框架主要包括接口(如List、Set、Queue)和实现这些接口的类(如ArrayList、HashSet、LinkedList等)。这个...

    集合框架的使用方法

    总结,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集合框架是Java编程语言中一个非常重要的组成部分,它提供了一组高效的数据结构和操作这些数据结构的方法。泛型则是Java在J2SE 5.0版本引入的一个特性,极大地提高了代码的类型安全性和可读性。下面我们将深入...

    Collection集合框架总结以及遍历方法

    总结集合框架需要实现哪些方法,以及集合的遍历方法JDK8.0以下的遍历方法

    集合框架的结构图,集合框架的结构图

    关于集合框架的系统结构图,感觉很详细了,忘了在哪个论坛上找的了,把图片考下来了,

Global site tag (gtag.js) - Google Analytics