JAVA String基础笔记(4)

2016-09-27  本文已影响14人  大虾咪

s1 是一个类类型变量,“abc”是一个对象 。

字符串最大特点:一旦被初始化就不可以被改变

StringBuffer 是一个容器

1.而且长度是可变的

2.可以字节操作多个数据类型

3.最终会通过tostring方法变成字符串

JDK1.5之后 出现了string builder

StringBuffer是线程同步的

StringBuilder 是线程不同步的

集合 Collection

collection

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

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

LinkedList:底层的使用的是链表结构。特点:增删速度很快,查询稍慢,线程不同步

Vector:底层是数组数据结构。线程同步。被ArrayList替代 因为效率低

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

Set集合的功能和Collection是一致的

常见的子类

HashSet:底层数据结构是哈希表 线程是非同步的

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

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

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

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

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

TreeSet:可以对Set集合中的元素进行排序。compare to 进行排序

记住排序时当主要条件相同时,一定要比较次要条件

底层是2叉树 保证元素唯一性的依据:compareto    删除 增加 都要在compareto中判断

TreeSet的第二种排序方式。

当元素自身不具备比较性,或者具备的比较性不是所需要的

这时需要让集合自身具备比较性(在集合初始化时,就具备比较方式)借助构造函数 new TreeSet(CompareInter)

泛型

泛型格式 :通过<>来定义要操作的引用数据类型

在使用java提供的对象时,什么时候写泛型呢?

通常在集合框架中很常见

只要见到<>就要定义泛型

当使用集合时,将集合中要存储的数据类型作为参数传递到<>即可

泛型类定义的泛型在整个类中有效,如果被方法使用

那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了

为了让不同方法可以操作不同类型,而且类型还不确定

那么可以将泛型定义在方法上

上一篇下一篇

猜你喜欢

热点阅读