集合
前言
集合又被称为容器,在Java中是对数据存储的具体体现,注意集合与数组的区别,集合的数据都是在内存中当程序关闭时,集合中的数据就会失去,所以集合是临时性的存储数据。
我们可以通过集合来存储数据,也可以对集合进行删除,修改,查看,新增等操作
集合分为collection和Map,collection有分为list和set
1.list
1.1 什么是list
list是Java工具库中定义好的一个集合
1.2 list的使用方法
创建一个list
public class TextList {
public static void main(String[] args) {
//创建当前list集合的对象
List<Integer> list=new ArrayList<>();
}
}
添加
public class TextList {
public static void main(String[] args) {
//创建当前list集合的对象
List<Integer> list=new ArrayList<>();
list.add(123);
System.out.println(list);
}
}
结果
CTRL键+F12 可以查看类库中的方法
2.Map
2.1Map
Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键(key)对象和一个值(value)对象。用于保存具有映射关系的数据。
2.2创建一个Map集合
Map<k,v > map = new HashMap();
map.put(k,v);
2.3Map的使用方法
void clear() 删除该 Map 对象中的所有 key-value 对。
boolean containsKey(Object key) 查询 Map 中是否包含指定的 key,如果包含则返回 true。
boolean containsValue(Object value) 查询 Map 中是否包含一个或多个 value,如果包含则返回 true。
V get(Object key) 返回 Map 集合中指定键对象所对应的值。V 表示值的数据类型
V put(K key, V value) 向 Map 集合中添加键-值对,如果当前 Map 中已有一个与该 key 相等的 key-value 对,则新的 key-value 对会覆盖原来的 key-value 对。
void putAll(Map m) 将指定 Map 中的 key-value 对复制到本 Map 中。
V remove(Object key) 从 Map 集合中删除 key 对应的键-值对,返回 key 对应的 value,如果该 key 不存在,则返回 null
boolean remove(Object key, Object value) 这是 Java 8 新增的方法,删除指定 key、value 所对应的 key-value 对。如果从该 Map 中成功地删除该 key-value 对,该方法返回 true,否则返回 false。
Set entrySet() 返回 Map 集合中所有键-值对的 Set 集合,此 Set 集合中元素的数据类型为 Map.Entry
Set keySet() 返回 Map 集合中所有键对象的 Set 集合
boolean isEmpty() 查询该 Map 是否为空(即不包含任何 key-value 对),如果为空则返回 true。
int size() 返回该 Map 里 key-value 对的个数
Collection values() 返回该 Map 里所有 value 组成的 Collection
通过使用Map可以减少遍历,因为Map通过保存值的方式来存储数据,所以在使用查找类的功能时运用Map集合可以提高运行效率。如学生信息的查找。
结果
此项目中student类已在同名包下的另一个类中创建定义,这不是重点所以不展开。
3.set
set集合的共同点都是唯一,
set又分为Hash set,Tree set,LinkedHash set三种它们的区别主要在于底层逻辑不同
Set<String> set =new HashSet<>();//数组+链表+红黑树--->Hash表
Set<String> set2 =new LinkedHashSet<>();数组+链表+红黑树+链表--->Hash表+链表
Set<String> set3 =new TreeSet<>();//红黑树
Hashset与Tree set类似都具有存储值的唯一性和显示的无序性,而Hashset与LinkedHashset的区别在于LinkedHashset具有显示的有序性。
示例
结果
显示上并非预想的 A,C,B,E,具有无序性。
而LinkedHash set 具有有序这里不再演示。
一些集合的使用
int size();求集合的长度
set. remove
set.add(“a”);//添加一个元素“a”
set.remove(“a”);//移除一个元素“a”
set.addAll()//添加一个数组
set.removeAll()//移除一个数组
常用类
1.object
Object 类,它是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类就默认继承 Object 类。Java 中任何一个类都是它的子类。由于所有的类都是由 Object 类衍生出来的,所以 Object 类中的方法适用于所有类。
使用方法
Object clone() 创建与该对象的类相同的新对象
boolean equals(Object) 比较两个对象是否相等。默认比较的是地址值。
void finalize() 当垃圾回收器确定不存在对该对象的更多引用时,对象的圾回收器调用该方法
Class getClass() 返回一个对象运行时的实例类(.class文件)
int hashCode() 返回该对象的散列码值
void notify() 激活等待在该对象的监视器上的一个线程
void notifyAll() 激活等待在该对象的监视器上的全部线程
String toString() 返回该对象的字符串表示,默认返回运行时类名+@+对象的hashCode的16进制数
void wait() 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待
2.String类
表示的是字符串,字符串是常量
String中与字符集相关的方法
String(byte[] by,String charset):通过指定的字符集,将指定的字节数组转成字符串(解码)
byte[] getBytes(String charset):通过指定的字符集,将字符串转成字节数组(编码)
3.StringBuilder
tringBuilder是封装的一个字符数组,该数组非final修饰,可以不断修改。所以对于一些经常需要修改字符串的情况,首选StringBuilder
StringBuilder线程不安全的可变字符序列
3.StringBuffer
StringBuffer 类似一个字符容器,当在其中添加或删除字符时,所操作的都是这个字符容器,因此并不会产生新的 StringBuffer 对象。
StringBuffer类的初始化方式:
StringBuffer 变量名=new String(字符串);
4.System
System类是一些与系统相关属性和方法的集合,而且在System类中所有的属性都是静态的,要想引用这些属性和方法,直接使用System类调用,这个类位于java.lang。
5.Date
用于确定对象的时间,可精确到毫秒
Date()//以当前时间毫秒值创建Date对象
Date(long time)//以指定的毫秒值创建Date对象
long getTime()//获取Date对象的毫秒值
setTime(long time)//设置Data对象的毫秒值
5.SimpleDateFormat
SimpleDateFormat包含在java.text包下面,是用来格式化和解析日期的具体类。日期和时间的格式由日期和时间模式字符串来确定。在日期和时间模式字符串中,未加引号的字母 ‘A’ 到 ‘Z’ 和 ‘a’ 到 'z’会被特殊处理替换为对应的日期时间,用format()方法来格式化;用pase()方法来解析。