今天讲了集合框架。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
反正今天挺纠结的。做的太慢了。希望以后每天一日一结。
分享到:
相关推荐
本总结图详细而全面地涵盖了Java集合框架的主要概念和组件,对于初学者和有经验的开发人员来说都是一个宝贵的资源。 在Java集合框架中,主要有两种类型的容器:集合(Collection)和映射(Map)。集合是用来存储一...
本文档为本人学习 java 集合框架期间的学习总结笔记,希望对新学习的朋友有所帮助和参考价值。本人java 开发时间不是太长,可能存在不完善或不对之处,欢迎指正!
集合的总结,集合的框架的介绍和父类子类之间关系以及
集合框架是Java编程语言中的核心组成部分,它提供了一套高效、灵活的数据结构和算法操作,使得程序员能够方便地存储和管理对象。这篇学习笔记将深入探讨Java集合框架的基础概念、主要类库以及常见应用场景。 首先,...
### Java集合框架总结 在Java编程中,集合框架(Collections Framework)是处理数据的重要工具集,它提供了一系列接口和类来存储、操作和检索不同类型的元素。本文将深入解析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...
BDQN ACCP 7.0 Java《集合框架及泛型》学习资料.part1
Java集合框架是Java编程语言中的一个核心组成部分,它为数据存储和操作提供了丰富的类库。在Java中,集合框架主要包括接口(如List、Set、Queue)和实现这些接口的类(如ArrayList、HashSet、LinkedList等)。这个...
Java集合框架是Java编程语言中一个至关重要的组成部分,它为数据存储和操作提供了丰富的类库。泛型是Java 5引入的一项创新特性,极大地增强了集合框架的安全性和效率。本讲解将深入探讨这两个主题,以及与之相关的...
总结,Java集合框架为开发者提供了强大的数据管理能力。理解和熟练运用集合框架,不仅可以提升代码质量,也能在面对复杂问题时游刃有余。无论是基础的增删查改,还是高级的并发控制、性能优化,都离不开对集合框架的...
JAVA集合框架,java框架总结,java集合框架,java集合框架学习,java集合框架类
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在J2SE 5.0版本引入的一个特性,极大地提高了代码的类型安全性和可读性。下面我们将深入...
### Java集合框架使用总结 #### 一、概述 在Java编程中,集合框架是一个非常重要的概念,它提供了标准的方式来存储和操作数据集合。Java集合框架的设计原则是将数据结构抽象成一组接口,再通过不同的实现类来具体...
总结集合框架需要实现哪些方法,以及集合的遍历方法JDK8.0以下的遍历方法
关于集合框架的系统结构图,感觉很详细了,忘了在哪个论坛上找的了,把图片考下来了,
Java集合框架是Java编程语言中的一个核心组件,它为数据组织提供了一系列的接口和类,使得数据处理变得高效且易于管理。在这个主题中,我们将深入分析集合框架的源码,理解其内部工作原理,以便更好地利用这些工具...