数组的特点,数组的使用,链表的特点,set和list的区别,arrayList,linkedList,的常用方法,set,hashset,

数组的特点:

数组的长度一旦定义则不能改变

数组中的元素都有整数索引

数组只能存储同一类型的元素

数组即可以存储基本数据类型,又可以存储引用数据类型

数组的使用:

获取元素。通过索引获取,arr[2];

添加元素(在元素3后面添加一个新元素8):要先创建新的数组,长度为原先的数组长度+1;遍历原先的数组,并将要添加的元素插入到新的数组当中

当碰到元素3的时候,在元素3后面添加新的元素8,最后把剩余的元素添加到元素8的后面

数组的特点:查找快,增删慢。

链表:由链子链接起来的一堆结点

结点结构:地址值,值,下一个结点的地址值

获取结点:只能遍历链表,然后一个一个查看

添加结点(在结点2后面添加一个结点9):

把结点2的下一个结点地址值修改为新结点9的地址值,把新结点9的下一个地址值改为结点3的地址值

链表特点:查询慢,增删快;

栈:先进后出(弹夹), 队列:先进先出()

List特点和特有功能:

要想用遍历集合的自定义对象必须在自定义对象的类中重写tostring方法才可以。

List:有序的(存储和读取的顺序是一致的)

有整数索引

允许重复

Set:无序的

无索引

元素不可以重复

List的特有功能:

Void  add(int   index, E  slement);在指定索引位置添加指定元素,本来的元素向后排

 E  get(int  index);根据索引返回元素,没有元素的时候会出现越界异常

E  remove(int   index);:删除指定索引的元素,返回被删除的元素

E  set(int  index, E  element);:修改指定索引位置的元素,替换成指定元素,返回被体替换的元素

//创建对象 。使用特有功能

List list = new  ArrayList();

List.add(1, hello)

List  的常用子类:

Arraylist底层结构是数组,查询快,增删慢

LinkedList底层结构是链表,查询慢。增删快

linkedList的特有功能:

Void addFirstE e;将元素添加到索引为0的为位置(最前位置)、

Void addLastE e):将索引添加到索引为size()-1的位置(最后的位置)

 E getFirst():获取索引为0 的元素

E getLast():获取索引为size()-1的元素

E  removeFirst():删除索引为0的元素,并返回被删除的元素

E  removeLast():删除索引为size()-1的元素,并返回被删除的元素

创建对象

LinkedLIST  list = new linkdlist();

 

 

 

 

Alt+shift+R  改元素的名字  (可以将名字一样的一块改掉)

SET接口:        

使用HashSet存储字符串并遍历:

Set的特点无序(存储和读取的顺序可能不一样);

不允许重复

没有整数索引

//创建对象

HashSet<String>  set = new HashSet<String>();

//添加元素

Boolean   boo  =  set.add(“hello”)   返回的是添加成功不成功

//遍历集合对象

增强for  

ForString s set{

Sysos);

}

使用HashSet存数自定义对象(不去重(先比hash值,自定义的hash值就是他们自己的地址值,他们地址值都不一样所以直接添加,不去重))并遍历:

//通过查看源码发现:

HashSET  ADD()方法,首先会使用当前集合的每一元素和新添加的元素进行hash值进行比较,如果hash不一样,则直接添加元素。如果hash值一样,比较地地址或者使用equals方法进行比较,比较结果一样则认为是重复,不添加,所有的比较结果都不一样则添加

 

创建对象

HashSet<Student>  set = new HashSet<Student>();

重写HashCode方法和equals方法实现HashSet存储自定义对象去重

在自定义的类中重写hashcode方法,返回相同值,让其运行重写的equals方法;

自动重写HashCodeequals方法是altshiftsh

优化前(重写的方法1,2

1重写equals方法时需要向下转型,获取子类特有的成员。(判断如果不同,return  false;)

2重写HashCode方法,让其方法体返回相同内容即可(就可以继续比较运行equals方法),例如(return  1;)

优化后(hashCode的方法体,让基本数据类型直接相加,让引用数据的hashcode值进行相加)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值