JAVASE学习笔记:第十二章 集合

因数组一旦创建长度就不能改变

集合(collection),将多个相同性质的元素汇聚成一个整体   所在java.util包

集合框架(collection framework)

一、List是一个有序的、可重复的子接口,ArrayList是实现list的一个子类

在集合当中只能存放引用数据类型,不能存放基本数据类型

ArrayList list=new ArrayList();

list.add(对象);

list.add(位置,对象);

list.get(2);//获取指定位置的元素,返回的数据类型是对象

list.contains(元素) //是否包含这个元素

list.size()   //元素的个数

list.remove(位置)  //移除元素,返回值是相对应位置的元素

二、泛型  JDK1.5之后的东西,主要是用来约束集合中元素的数据类型

ArrayList<String> list=new ArrayList<String>();

增加for循环,JDK1.5之后的东西

for(String s:list){

System.out.println(s);

}

通过迭代器,while(it.hasnext()){ it.next();}

通过对象流写对象的过程:

因直接将对象写入流,追加读取会报错,所以必须借助ArrayList集合

1、判断文件中是否存在该对象集合,如果不存在则new()一个,如果存在则追加

2、创建list对象存储student对象元素

3、将list对象写入到data文件中

/**

*通过对象流把list读取和写入到data文件中

*2015-6-16

*作者    常宝

*/

public class testsaveobj {

public static void main(String[] args) {

Student s=new Student();

s.setAge("20");

s.setName("ddd");

s.setSex(2);

testsaveobj t1=new testsaveobj();

boolean b= t1.objwrite(s);

System.out.println(b);

ArrayList<Student> alist=t1.objread();

System.out.println(alist.size());

}

//将存储student元素的list对象写入到data文件中

public boolean objwrite(Student s){

File  f=new File("d:\\data.txt");

ArrayList<Student> list;

if(f.length()==0){

list=new ArrayList<Student>();

list.add(s);

}

else{

list=this.objread();

list.add(s);

}

ObjectOutputStream objOut=null;

try {

objOut=new ObjectOutputStream(new FileOutputStream(f));

objOut.writeObject(list);

return true;

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

finally{

try {

objOut.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return false;

}

//读取data文件里的list对象的student元素

public ArrayList<Student>  objread(){

File  f=new File("d:\\data.txt");

ObjectInputStream objin=null;

if(f.length()==0){

System.out.println("文件无内容");

}

else{

try {

objin=new ObjectInputStream(new FileInputStream(f));

ArrayList<Student> list=(ArrayList<Student>)objin.readObject();

return list;

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

finally{

try {

objin.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

return new ArrayList<Student>();

}

}

三、HashSet 是无序的、无重复子类

因为没有位置,不能通过get获取指定元素值,只能进行增加,删除等操作

判断元素是否有重复值是调用hashcode进行比较是否重复值

只能通过迭代器进行遍历

四、HashMap<key,value>  通过key查找对应的value

没有迭代器

HashMap<String,String>  map=new HashMap<String,String>();

map.put("1","2");  返回的数据类型是旧值

containskey  判断是否包含指定的键

map.keyset();  返回set数据类型的集合

containsvalue  判断是否包含值

map.get(key); 根据键返回对应的值

map.remove(key);根据键移除对应的值

map.entrySet() ;返回 set<map<k,v>>

获取所有键,循环遍历所有键,根据键获取相应的值

一、Collections集合工具类

1、升序排列:Collectons.sort(list);

2、二分查找binarySearch:将一组数据排序并输出指定数据的位置 Collectons.binarySearch(list,value);

注意:自定义对象比较需要实现comparable比较接口,可进行重写升序或降序排列,eg :   return o.filed-b.filed

二、Arrays  数组工具类

1、排序sort

2、二分查找binarySearch

3、复制copyof   int [] arr1=Arrays.copyof(arr,新数组的长度);

4、范围复制copyofrange

时间: 2024-10-12 10:06:07

JAVASE学习笔记:第十二章 集合的相关文章

Java学习笔记—第十二章 Java网络编程入门

第十二章  Java网络编程入门 Java提供的三大类网络功能: (1)URL和URLConnection:三大类中最高级的一种,通过URL网络资源表达方式,可以很容易确定网络上数据的位置.利用URL的表示和建立,Java程序可以直接读入网络上所放的数据,或把自己的数据传送到网络的另一端. (2)Socket:又称"套接字",用于描述IP地址和端口(在Internet中,网络中的每台主机都有一个唯一的IP地址,而每台主机又通过提供多个不同端口来提供多种服务).在客户/服务器网络中,当客

《JAVA编程思想》学习笔记——第十二章 通过异常处理错误

Java的基本理念是 "结构不佳的代码不能运行" 发现错误的理想时机是在编译阶段,也就是在你试图运行程序之前.然而,编译期间并不能找出所有的错误,余下的问题必须在运行期间解决.这就需要错误源能通过某种方式,把适当的信息传递给某个接收者----该接收者将知道如何正确处理这个问题. 异常情形是指阻止当前方法或作用域继续执行的问题. 当抛出异常后,有几件事会随之发生.首先,同Java中其它对象的创建一样,将使用new在堆上创建异常对象.然后,当前的执行路径被终止,并且从当前环境中弹出对异常对

SaltStack 学习笔记 - 第十二篇: SaltStack Web 界面

SaltStack 有自身的用python开发的web界面halite,好处是基于python,可以跟salt的api无缝配合,确定就比较明显,需要个性化对web界面进行定制的会比较麻烦,如果喜欢体验该界面的可以参考下面的文章  http://rfyiamcool.blog.51cto.com/1030776/1275443/ 我是运用另一个python+php来进行web开发,具体需要的工具有在我的另一篇文章里面介绍过,这里再重新进行整个开发介绍 首先介绍php 跟python通信的工具 pp

汇编入门学习笔记 (十二)—— int指令、port

疯狂的暑假学习之  汇编入门学习笔记 (十二)--  int指令.port 參考: <汇编语言> 王爽 第13.14章 一.int指令 1. int指令引发的中断 int n指令,相当于引发一个n号中断. 运行过程相当于: (1)取中断类型吗n. (2)标志寄存器入栈:设置IF=0,TF=0. (3)CS.IP入栈 (4)(IP)=(n*4),(CS)=(n*4+2) 样例1:编写.安装中断7ch.实现求一个word型数据的平方,用ax存放这个数据. assume cs:code code s

汇编入门学习笔记 (十二)—— int指令、端口

疯狂的暑假学习之  汇编入门学习笔记 (十二)--  int指令.端口 参考: <汇编语言> 王爽 第13.14章 一.int指令 1. int指令引发的中断 int n指令,相当于引发一个n号中断. 执行过程相当于: (1)取中断类型吗n. (2)标志寄存器入栈:设置IF=0,TF=0. (3)CS,IP入栈 (4)(IP)=(n*4),(CS)=(n*4+2) 例子1:编写.安装中断7ch,实现求一个word型数据的平方,用ax存放这个数据. assume cs:code code seg

Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验

Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 这一章很多,但是很有趣,也是这书的最后一章知识点了,我现在还在考虑要不要写这个拼图和2048的案例,在此之前,我们先来玩玩Android5.X的新特性吧!

【Unity 3D】学习笔记四十二:粒子特效

粒子特效 粒子特效的原理是将若干粒子无规则的组合在一起,来模拟火焰,爆炸,水滴,雾气等效果.要使用粒子特效首先要创建,在hierarchy视图中点击create--particle system即可 粒子发射器 粒子发射器是用于设定粒子的发射属性,比如说粒子的大小,数量和速度等.在创建完粒子对象后,在右侧inspector视图中便可以看到所有的粒子属性: emit:是否是使用粒子发射器. min size:粒子最小尺寸. max size:粒子最大尺寸. min energy:粒子的最小生命周期

马哥学习笔记三十二——计算机及操作系统原理

缓存方式: 直接映射 N路关联 缓存策略: write through:通写 write back:回写 进程类别: 交互式进程(IO密集型) 批处理进程(CPU密集型) 实时进程(Real-time) CPU: 时间片长,优先级低IO:时间片短,优先级高 Linux优先级:priority 实时优先级: 1-99,数字越小,优先级越低 静态优先级:100-139,数据越小,优先级越高 实时优先级比静态优先级高 nice值:调整静态优先级   -20,19:100,139   0:120 ps

【Unity 3D】学习笔记三十二:游戏元素——游戏光源

游戏光源 在3D游戏中,光源是一个非常具有特色的游戏组件.用来提升游戏画面质感的.如果没有加入光源,游戏场景可能就会显得很昏暗.在unity中提供了三种不同的光源类型:点光源,聚光灯,平行光. 点光源 顾名思义,点光源是从一个点向周围散发出光的光源,就像电灯一样.创建点光源在hierarchy视图中点击create--point light: 创建完以后,点击点光源对象,在右侧inspector视图中可以看到点光源的所有信息: type:光源的类型.有point(点光源),directional

《Javascript权威指南》学习笔记之十二:数组、多维数组和符合数组(哈希映射)

Array(数组)是JavaScript中较为复杂的数据类型,同Java.C#.VB等程序语言的数组相比,Javascript数组中的元素不必为相同的数据类型,可以在数组每个元素上混合使用数字.日期.字符串.Object,甚至添加一个嵌套数组. 一.创建数组 1.var arr1 = new Array(); /var  arr2 = new Array(length); /var arr3 = new Array(element1,element2...); var arr4 = [eleme