集合框架的组织结构:collection
Set hashlist
List arraylist
Linkedlist
集合框架就是一个框可以将各种对象放在里面。
看父接口的jdk看他们的方法。
集合框架分为两类
* 1. Collection :存放许多单个对象,两个子接口Set List
* Set中不能存放重复对象(无序)
* List中存放的是有索引(有序,不是大小顺序)的对象
List有两个实现类ArrayList ,LinkedList
ArrayList是基于数组实现的,查找快,但是增删改慢 LinkedList基于链表实现的,增删改快,查找相对较慢
* 2 .Map 存放的是键值对
<!--[if !supportLists]-->1、<!--[endif]-->第一个类
Arrays这个类包括了很多操作数组的静态方法,直接用类名调用对我们的数组进行操作。
//1.将数组变为List的方法
List list = Arrays.asList(is);
//2二分搜索法?:在一个有序数组中,查找指定元素
int index = Arrays.binarySearch(is, 2);
//3.copyof 复制数组,复制前五个
int[] is2 = Arrays.copyOf(is, 5);
//4.copyRangeof复制指定部分
int [] is3 = Arrays.copyOfRange(is, 2, 5);
//5. fill 填充,给指定数组进行数字填充
int [] is4 = new int[8];//默认都是零
Arrays.fill(is4, 8);
for(int i : is4){
System.out.println(i);
}
//6. 排序的方法,将数组中的数据进行自然排序
List接口
添加add()
//删
alist.remove(1);//根椐索引删除
alist.remove("zhangsan1");//根椐对象删除
//改
Object obj = alist.get(1);//根椐索引位得到对象,并对其修改
查询根据索引一个一个查询
//查询
for(int i = 0 ;i < klist.size();i++){
Object ooo = klist.get(i);
}
堆栈(stack):后进先出
队列(queue): 先进先出
Set
中间不能放重复对象,而且无序。
1、//去掉arrylist重复值
HashSet set2 = new HashSet(list);
Iterator it2 = set2.iterator();
2、HashSet set = new HashSet();
set.add("zhangsan1");
set.add("zhangsan2");
set.add("zhangsan3");
set.add("zhangsan2");//插入了重复对象,但是不会添加到set集合中,相当于没有这行语句
3、必须掌握--------------------------------------------------------------
* HashSet 比较对象是否相等的方法是
* 首先比较两个对象的HASHCode是否相等,
* 如果相等再调有equals方法,最终得到是否相等的结论
* 如果两个对象的HASH码不相等,直接返回FALSE,不
* 会调用equals方法了
*
* 每个自定义类必须提供一个计算该类对象的hashCode的方法
* 只要对象放入带HASH的集合中,一定要重写HASHCODE和* EQUALS方法、
什么时候会用到hashcode?
当对象作为索引(一对一对)来存的时候,就会用到
<!--[if gte vml 1]><v:shapetype id="_x0000_t32" coordsize="21600,21600" o:spt="32" o:oned="t" path="m,l21600,21600e" filled="f"> <v:path arrowok="t" fillok="f" o:connecttype="none"/> <o:lock v:ext="edit" shapetype="t"/> </v:shapetype><v:shape id="_x0000_s1026" type="#_x0000_t32" style='position:absolute; left:0;text-align:left;margin-left:119.25pt;margin-top:15.3pt;width:22.7pt; height:0;z-index:251657728' o:connectortype="straight" strokecolor="#739cc3" strokeweight="1.25pt"> <v:stroke endarrow="block"/> <v:shadow on="t" offset="-2pt" offset2="-8pt"/> <o:extrusion v:ext="view" viewpoint="-34.72222mm" viewpointorigin="-.5" skewangle="-45" lightposition="-50000" lightposition2="50000"/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->Iternator:迭代器 用于实现容器内元素的遍历操作
所有实现了collection接口的容器都有一个iterator的方法用以返回一个实现了iterator接口的对象。
Map
Map:是采用键值对的方式key-value 在使用过程中key是唯一的(unique)value值可以重复
散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法,散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构,我们知道Hashmap里面存放的是对象,在存放对象的时候hashmap都会为每个对象算出一个hashcode编码然后根据这个编码在存放在不同的空间里
Comparable:
可以与此对象进行比较的那些对象的类型,该接口只有一个方法
Comparator
Public int comparator(object obj)
返回0 表示this==obj
返回整数表示this>obj
返回负数表示this<obj
对数据结构的选择:
<!--[if !supportLists]-->l <!--[endif]-->Array:读快改慢
<!--[if !supportLists]-->l <!--[endif]-->Linked:改快读慢
<!--[if !supportLists]-->l <!--[endif]-->Hash:两者之间
Properties类:配置文件一般用于记录程序的配置,游戏,声音,字体大小等。
主要用于读取以项目的配置文件(以porpertise和xml结尾的文件)把这些属性存放在porpertise中有便于我们以后的修改。