2021-07-20

集合

  • java的集合就像容器一样,是用来存储java类的对象,功能多,方便查找,存入,取出。
  • 集合里面一般只能保存对象,就是保存对象的引用的变量

Collection接口

1.List 有序,可重复

ArrayList:
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程不安全,效率高

LinkedList:
优点: 底层数据结构是链表,查询慢,增删快。
缺点: 线程不安全,效率高
Vector:
优点: 底层数据结构是数组,查询快,增删慢。
缺点: 线程安全,效率低

2.Set 无序,唯一

(1)HashSet:
底层数据结构是哈希表。(无序,唯一)
保证元素唯一性可以依赖两个方法:hashCode()和equals()

HashSet底层数据结构采用哈希表实现,元素无序且唯一,线程不安全,效率高,可以存储null元素,元素的唯一性是靠所存储元素类型是否重写hashCode()和equals()方法来保证的,如果没有重写这两个方法,则无法保证元素的唯一性。

具体实现唯一性的比较过程:

1.存储元素时首先会使用hash()算法函数生成一个int类型hashCode散列值,然后已经的所存储的元素的hashCode值比较,如果hashCode不相等,肯定是不同的对象。
2.hashCode值相同,再比较equals方法。
3.equals相同,对象相同。(则无需储存)

(2)LinkedHashSet:
底层数据结构是链表和哈希表。(FIFO插入有序,唯一)
1.由链表保证元素有序
2.由哈希表保证元素唯一

LinkedHashSet底层数据结构采用链表和哈希表共同实现,链表保证了元素的顺序与存储顺序一致,哈希表保证了元素的唯一性。线程不安全,效率高。

3.Map接口:

Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以使任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value。

Map接口有四个比较重要的实现类,分别是HashMap、LinkedHashMap、TreeMap和HashTable。

最主要的区别。

TreeMap是有序的,HashMap和HashTable是无序的。

Hashtable的方法是同步的,HashMap的方法不是同步的。

Object类

传递任何类型的类来使用

显示继承:

public class A extends Object{

}

隐式继承:就是不把extends Object 写出来

方法:

projected Object clone()/** 创建并且返回一个对象的拷贝**/
boolean equals(Object obj) /** 比较两个对象是否相等,用来比较两个引用的虚地址。当且仅当两个引用在物理上是同一个对象时,返回值为true,否则将返回false。**/
      
protected void finalize()   /** 垃圾回收器确定不存在对该对象有更多的有引用的时候,会使用该方法**/
Class<?>getClass()/**获取该对象运行时候的类**/
int hashCode() /**获取对象的hash值**/
void notify() /**唤醒该对象上等待某个线程**/notifyAll则是/**等待的所有线程
String toString /**返回对象的字符串表示形式**/
void wait() /**让当前线程进入等待状态**?/

java序列化

就是把你得到对象拿出来,要把它封装起来。可以方便可以在网络上传输。

要想序列化成功要满足两个条件

该类必须实现 java.io.Serializable 接口。

该类的所有属性必须是可序列化的。

主要的类

//在项目中,服务端和客户端交互时,获取客户端传过来的信息时用这个会更好,否则可能会存在数据乱序的问题

序列化 ObjectOutputStream负责将对象写入字节流。

  ObjectInputStream objectInputStream = new ObjectInputStream(clientSocket.getInputStream());

反序列化 ObjectInputStream从字节流重构对象。就是把对象从数据源还原回来

User userInformation=(User)objectInputStream.readObject();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值