【Java】常见类和集合

Java的常见类和对象

Java有一系列功能强大的可重用类,分别在不同的包中,这些包按功能可划分为:语言包 java.lang(language)、输入/输出包java.io、实用程序包java.util(utility)、小应用程序包java.applet、图形用户接口包javaswing、java.awt和网络包java.net等。有时人们称前三种包为java的基础包。
Java常用包的简单介绍如下:
1)javalang包主要含有与语言相关的类,如Math类,System类。java.lang包由解释程序自动加载,不需显式说明,
2)java.io包主要含有与输入输出相关的类,这些类提供了对不同的输入和输出设备读写数据的支持,这些输入和输出设备包括键盘、显示器、打印机、磁盘文件和网络等。
3)java.util包包括许多具有特定功能的类,有日期、向量、哈希表、列表和堆栈等。
4)javaswing包和javaawt包提供了创建图形用户界面元素的类。通过这些元素,编程者可以控制所写Applet或程序的外观界面。该包中包含定义窗口、对话框、按钮、复选框、列表、菜单、滚动条及文本域的类。
5)javanet包含有与网络操作相关的类,如TCP socketsURL以及二进制码向ASCII码转换的工具。
6)javaapplet包含有控制Hotjava浏览器的类,这些类可以控制HTML文档格式、应用程序中的声音资源等,其中Applet类是用来创建包含于HTML页内的applet必不可少的类

Object类

Java 中所有的类都有一个共同的祖先 Object 类,子类都会继承所有 Object 类中的 public 方法。

String类

StringBuilder类

Scanner类

Math类

Character 类

Character 类用于对单个字符进行操作。

Character 类在对象中包装一个基本类型 char 的值

Java语言为内置数据类型char提供了包装类Character类。

Character类提供了一系列方法来操纵字符。你可以使用Character的构造方法创建一个Character类对象。

System类

java.util包中的集合类

stack类

Vector类

Interger类

hashtale类

Set也是一个接口,它表示一个无重复元素的集合,无序,唯一(它是通过判断hashcode来判断是否重复,如果得不到我们想要的结果,那就重写equals 方法)

Set 的实现类:hashSet

Collection类

有多种容器类型:

List 以特定的顺序保存元素
Set 元素不能重复
Queue 链表,只能从一端插入对象,从另一端取出 遵循先进先出原则
Map 键值对插入

链接: python和java数据类型

List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口
Set下有HashSet,LinkedHashSet,TreeSet
List下有ArrayList,Vector,LinkedList
Map下有Hashtable,LinkedHashMap,HashMap,TreeMap

Collection接口下还有个Queue接口,有PriorityQueue类

在这里插入图片描述

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

TreeMap是有序的,HashMap和HashTable是无序的。
Hashtable的方法是同步的,HashMap的方法不是同步的。这是两者最主要的区别。
这就意味着:

Hashtable是线程安全的,HashMap不是线程安全的。
HashMap效率较高,Hashtable效率较低。
如果对同步性或与遗留代码的兼容性没有任何要求,建议使用HashMap。 查看Hashtable的源代码就可以发现,除构造函数外,Hashtable的所有 public 方法声明中都有 synchronized关键字,而HashMap的源码中则没有。
Hashtable不允许null值,HashMap允许null值(key和value都允许)
父类不同:Hashtable的父类是Dictionary,HashMap的父类是AbstractMap

Java集合中List,Set以及Map等集合体系详解

Java list与Python list相比较

Java List:有序的,可重复的。(有序指的是集合中对象的顺序与添加顺序相同)

Python list(列表)是有序的,可变的。

Java List分类:

1.ArrayList:底层使用数组,线程不安全,查找速度快,增删速度慢

在迭代过程中,对集合对象的增删会出现异常

2.LinkedList:底层使用链表,线程不安全,查找速度慢,增删速度快

后进先出,类似于栈

3.Vector: 底层使用数组,线程安全,查找速度快,增删速度慢,被ArrayList替代

Python 列表无分类,list是Python的基本数据结构。

在这里插入图片描述

Java Map与Python dict相比较

Java Map属于集合,但不属于Collection体系中一部分,无序的,不可重复,以键值对形式存在。

Python dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度,dict的key必须是不可变对象,因为dict根据key使用哈希算法来计算value的存储位置。

Java Map分类:

— HashMap:底层使用的数据结构是哈希表

        保持键的唯一性同HashSet相同。

— TreeMap:底层使用的数据结构是二叉树

        保持键的唯一性同TreeSet相同。

Python 字典无分类,dict是Python的基本数据结构。

在这里插入图片描述

Java Set与Python set相比较

Java Set底层使用的就是Java Map的键,值被设置为空,因此Set与Map保持唯一性的原理是相同的。

Python set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

Java Set:无序,不可重复

—HashSet:底层使用哈希表,线程不安全

               保证对象唯一的方式:重写hashcode(),equals(Object obj).使用哈希算法导致无序

—TreeSet:底层使用二叉树,线程不安全

               在使用add方法添加对象时,会对加入集合的对象进行排序

保证对象唯一的方式:1 实现Comparable接口,实现compareTo()方法的返回值是0,则不能加入。2 创建一个类,实现Comparator,实现compare()方法。

Python 集合无分类,set是Python的基本数据结构。

在这里插入图片描述

Java的集合框架

集合框架被设计成要满足以下几个目标。

该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。

该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。

对一个集合的扩展和适应必须是简单的。

为此,整个集合框架就围绕一组标准接口而设计。你可以直接使用这些接口的标准实现,诸如: LinkedList, HashSet, 和 TreeSet 等,除此之外你也可以通过这些接口实现自己的集合。

在这里插入图片描述

Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。

集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:

接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象

实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。

算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值