集合框架

集合框架的组织结构: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();

2HashSet 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是唯一的(uniquevalue值可以重复

散列表,它是基于快速存取的角度设计的,也是一种典型的空间换时间的做法,散列表(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类:配置文件一般用于记录程序的配置,游戏,声音,字体大小等。

主要用于读取以项目的配置文件(以porpertisexml结尾的文件)把这些属性存放在porpertise中有便于我们以后的修改。

 

 

你可能感兴趣的:(集合框架)