集合 164~~179

164_基本数据类型对象包装类_黑马程序员_Java基础视频

/*

基本数据类型对象包装类

byte  基本数据类型 Byte 引用数据类型.

short Short

int Integer

boolean Boolean

float Float

double Double

char Character

long Long

byte Byte

基本数据类型对象包装类的最常用作用.

就是用于基本数据类型和字符串类型之间转换.

基本数据类型转成字符串.

字符串转成基本数据类型.

基本数据类型+""

专业做法;

基本数据类型.toString[基本数据类型中];

如    Integer.toString(34);//将34整数变成34字符串.

字符串转成基本数据类型.

xxx  a=Xxx.parseXxx(String);

int a =Integer.parseInt("123");

boolean a=Boolean.parseBoolean("true");

十进制转成其他进制

toBinaryString();

toHexString();

toOctalString();

其他进制转成十进制

parseInt(string s,int radix);

静态调用方式

对象调用方式.

*/

165_基本数据类型对象包装类新特性_黑马程序员_Java基础视频


Integer x=new Integer(4);

JDK1.5版本以后出现的新特性.

Integer x=4;//自动装箱

x=null;/为空会抛异常,要做判断.

x=x/*x.intValue()*/+2;//x+2:x进行了自动拆箱,变成了int类型,和2进行了加法运算.

再将和进行装箱赋给了x.

类类型变量肯定指向的是对象.

引用数据类型,基本数据 对象

Integer m=128;

Integer n=128;

m==n   false;

Integer a=127;

Integer b=127;


结果为true;因为a 和b指向了同一个Integer对象.

因为当数值在byte范围内容对于新特性,如果该数值已经存在,则不会在开辟新空间.


166_集合框架(体系概述)_黑马程序员_Java基础视频

集合类


集合框架


为什么出现集合类.

面向对象语言对于事物的体现都是以对象形式,所以为了方便对多个对象的操作.

就对对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式.

数组和集合类同是容器,有何不同.

数组虽然也可以存储对象,但长度是固定的,集合是长度可变的.

数组中可以存储基本数据类型,集合只能存储对象.

集合类的特点

集合只用于存储对象,集合对象是可变的,集合可以存储不同类型的对象.

Collection

子接口  List  Set

常见子类,,ArrayList  LinkedList Vector

HashSet TreeSet



集合框架

为什么会出现这么多容器呢?

因为每一个容器对数据的存储方式都有不同.

这个存储方式可以称之为:数据结构.


167_集合框架(共性方法)_黑马程序员_Java基础视频

168_集合框架(迭代器)_黑马程序员_Java基础视频

Collection 是根接口.


Iterator it=a.iterator()

获取迭代器.用于取出集合中的元素.

什么是迭代器

其实就是元素的方式.



就把取出方式定义在集合的内部,这样取出方式,就可以直接访问

集合内部的元素,那么取出方式就被定义成了内部类.

而每一个容器的数据结构不同.所以取出的,动作细节也不一样.

但是都有共性内容,判断和取出,,那么可以将这些共性功能抽取.


那么这些内部类都符合一个规则,该规则是Iterator 

如何获取结合的取出对象呢?

通过一个对外提供的方法  iterator();

169_集合框架(List集合共性方法)_黑马程序员_Java基础视频

170_集合框架(ListIterator)_黑马程序员_Java基础视频

171_集合框架(List集合具体对象的特点)_黑马程序员_Java基础视频


 

.Collection

|--List:元素是有序的,元素可以重复,因为该结合体系有索引

|--ArrayList:底层的数据结构使用的是数组结构.特点:查询速度很快,但是增删稍慢..线程不同步

|--LinkedList:底层使用的是链表数据结构 特点:查询速度慢,但是增删快

|--Vector:底层的数据结构用的是数组结构,JDK1.0 元老级干部..线程同步. 被ArrayList替代的了.

 

|--Set:元素是无序的,元素不可以重复,该集合中没有索引.

ArrayList  可变长度数组.初始10,百分之50延长

Vector 可变程度也是10,百分之100延长

开发的时候.一般都是用

 

List:特有方法:凡是可以操作角标的方法都是该体系特有方法

add(index,element)

addAll(index,Collection);

remove(index);

set(index,element);

get(index);

subList(from,to);

listIterator();迭代器

Iterator it=al.iterator();

while(it.hasNext()){

sop("next:"+it.next());}

 

List 集合特有的迭代器,ListIterator是Iterator的子接口.

在迭代时,不可以通过集合对象的方法操作集合中的元素.

因为会发生,ConcurrentModificationException异常

所以在迭代器时,只能用迭代器的方法操作元素,可是Iterator方法是有限的.

只能对元素进行判断,取出,删除的操作.

如果想要其他操作如添加,修改等,就需要使用其子接口叫做listIterator

该接口只能通过List集合的listIterator方法获取.

 

172_集合框架(Vector中的枚举)_黑马程序员_Java基础视频

枚举就是Vector特有的取出方式.

发现枚举和迭代器很象.

其实枚举和迭代是一样的.

因为枚举的名称以及方法的名称都过长.

所以被迭代器取代了.

枚举郁郁而终了.

173_集合框架(LinkedList)_黑马程序员_Java基础视频

LinkedList:特有方法.

addFirst();

addLast();

getFirst();

getLast();

获取元素,但不删除元素

removeFirst();

removeLast();

获取元素,但是元素被删除.如果集合中没有元素会出现NoSuchElementException

在JDK1.6出现了替代方法.

offerFirst();

offerLast();

peekFirst();

peekLast();

pollFrst();

pollLast();

获取元素,但是元素被删除.如果集合中没有元素会出现会返回null

174_集合框架(LinkedList练习)_黑马程序员_Java基础视频

175_集合框架(ArrayList练习)_黑马程序员_Java基础视频

使用LinkedList模拟一个堆栈或者队列数据结构

堆栈:先进后出,如同一个杯子

队列,先进先出,first in first out FIFO如果一个水管.

 

去除ArrayList集合中的重复元素.

 176_集合框架(ArrayList练习2)_黑马程序员_Java基础视频 

 

 将自定义对象作为元素存到ArrayList集合中,并去除重复元素

 

比如存人对象, 同姓名,同年龄.势为同一个人,为重复元素.

 

 思路

1,对人描述,将数据封装进人对象.

2,定义容器,将人存入.

3,取出.

 

List集合判断元素是否相同,依据的是元素的equals 方法.

 177_集合框架(HashSet)_黑马程序员_Java基础视频

178_集合框架(HashSet存储自定义对象)_黑马程序员_Java基础视频

179_集合框架(HashSet判断和删除的依据)_黑马程序员_Java基础视频

|--Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复.

 |--HashSet:底层数据结构是哈希表

         HashSet是如何保证元素唯一性的呢?

         是通过元素的两个方法,hashCode和equals来完成.

         如果元素的HashCode值相同,才会判断equals是否为true.

         如果元素的hashcode值不同不会调用equals

注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals.

Arraylist 只依赖equals    HashSet依赖hashcode再依赖equals  这就是hash表的特点.

 

开发的时候,一般都会复写hashcode   equals

public int hashCode(){

return name.hashCode()+age*39;//name.hashCode()+age*27

}

 

 

 |--TreeSet:

 

Set集合的功能和Collection是一样的.

往hashSet集合中存入自定义对象.

姓名和年龄相同为同一个人,重复元素.

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值