0
点赞
收藏
分享

微信扫一扫

Java基础-Day06 ---------------------持续更新

unadlib 2022-04-13 阅读 72

集合框架

Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中

集合:

最常用的一种容器。为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象

集合特点:

1.集合用来存储对象,并且是对象的地址,不是对象本身

2.集合可以存储任何类型的对象,集合长度可变

与数组区别:

1.集合只可以存储对象,长度可变,并且可以存储不同类型的对象[引用]

2.数组即可以存储对象又可以存储基本数据类型,长度固定,并且同一数组存储的数据类型必须相同

Collection接口


Collection 接口存储一组不唯一,无序的对象,List和Set是此接口的子接口;

Collection的共性方法

1.添加元素:boolean add(Object obj)

2.删除元素:boolean remove(元素)

3.清空集合:void clear()

4.判断元素是否存在该集合中:boolean contains(元素)

判断集合是否为空:boolean isEmpty()

5.获取元素个数:int size()

6.取出元素利用迭代器:Interator it=集合.iterator();

List集合(对脚标可以进行操作)


List 接口存储一组不唯一,有序(插入顺序)的对象:

ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高LinkedList采用链表存储方式。插入、删除元素时效率比较高

1.List集合方法:

在指定位置添加元素:add(int index,元素)

删除指定位置的元素: remove(int index)修改指定位置的元素: set(int index,newElement)

通过角标获取指定位置元素: get(int index)

注意:List集合判断元素是否相同,依据的是元素的equals()方法,contains方法[是否包含]和remove方法会调用元素equals方法。

2.List集合的特有迭代器:ListIterator

ListIterator 是Iterator的子接口。

在迭代的过程中,不可以通过集合对象的方法来操作。集合中的元素,会发生ConcurrentModificationException异常。所以在迭代时,只能用迭代器的方法来操作元素,可是Iterator的方法是有限的,只能对元素进行判断,取出,删除的动作。如果想要其他的操作,如添加、修改等,就需要使用其子接口ListIterator。创建ListIterator对象:ListIterator li=al.listIterator();

3.LinkedList

(1)它的特有方法添加元素:

获取元素:

删除元素:

Set集合


Set 接口存储一组唯一,无序的对象 :

1.HashSet:底层使用的是哈希表结构,线程不同步,存储元素无序,元素不可重复。

注:关于HashSet如何保证元素唯一性:

是通过元素的两个方法:hashCode和equals来完成的。如果元素的hashCode值相同,才会判断equals是否是true。如果元素的hashCode值不同,不会调用equals方法。所以对于自定义对象,要存入HashSet集合中,为了保证元素的唯一性,必须复写HashCode方法和equals方法。

关于HashCode:哈希码值相等,对象不一定相等;哈希码值不相等,对象一定不相等

2.TreeSet:底层使用的是二叉树结构,可以对Set集合中的元素进行排序[按字母的自然顺序,且大写的在小写的字母前面]。

TreeSet集合存储自定义对象,对对象实现排序功能的方法有两种;

第一,元素自身具备比较性,即实现Comparable接口并复写comparaTo方法

第二,集合本身具备比较性,即在集合的构造函数里传入

Comparator接口类型的对象。即,定义一个类实现Comparator接口,并覆盖compara方法。并将此类对象作为参数传递给TreeSet集合的构造函数中。

Map集合[与Collection无关,是独立的接口]


Map接口存储一组键值对象,提供key到value的映射

.Map集合的共性方法添加元素: put(K key, V value )删除元素: remove(Object key) 清空集合: clear()

判断: boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。

boolean containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true

boolean isEmpty()//判断集合是否是空的。 获取: V get(Object key) //获取键所对应的值

int size() //获取集合的大小

Map的子类:

(1)Hashtable:底层是哈希表数据结构,不可以存入null键和null值用作键的对象必须实现hashCode方法和equals 方法;该集合是线程同步的。

(2)HashMap:底层是哈希表数据结构,允许使用null值和null键,该集合是不同步的。效率较高

(3)TreeMap:底层是二叉树数据结构,线程不同步。可以用于给Map集合中的键进行排序。Map 的key存储结构类似于Set,value存储结构类似于List

对于Map集合中元素的取出方式

(1)利用keySet:将map中的所有键存入set集合,因为set具备迭代器,所以可以通过迭代器方式取出所有的键,再根据get方法,获取每一个键对应的值。

(2)entrySet:将map集合的映射关系直接存入到了set集合中,而这个关系数据类型就是Map.Entry,Entry其实就是Map中的一个static内部接口。

HashMap保证元素唯一性的原理和HashSet相同,TreeSet对元素的排序原理和TreeSet相同.

包装类

Integer:

compareto()

equals()

hashCode()

parseInt() [字符串转变成基本数据类型]

toBinaryString() [整数转成二进制]

toOctalString() [整数转成八进制]

toHexString() [整数转成十六进制]

valueof() [-127--128] 不超出范围valueof性能要好,因为有高速缓存,超出范围不如用new

character没有parseInt方法

compareto()

isDigit() [是否是数字]

isLetter() [是否是字符]

isWhitespace() [是否是回车换行以及空格]

isLowerCase() [是否是小写]

isUpperCase() [是否是大写]

toLowerCase() [转成小写]

toUpperCase() [转成大写]

String

charAt(index) [下标处的字符]

concat() [在字符串后面添加字符串]

contains() [包含]

endWith() [以...结尾]

indexof() [...的下标]

isEmpty() [判断是否为空]

lasIndeof() [从后往前数下标]

length() [字符串长度]

repalce("a",''b'') [b替换a]

startWith() [判断是否以...开头]

substring() [截取字符串(左闭右开)]

split('a') 0

split('a') 1

包裹类型有一些特殊的用途,比如Integer.MAX_VALUE是int型变量的最大值

Character.idDigit(char ch) 判断这个字符是不是数字

Character.isLetter(char ch) 判断这个字符是不是字母

Character.isLetterOrDigit(char ch) 判断这个字符是不是字母或数字

Character.isLowerCase(char ch) 判断这个字符是不是小写字母

Character.isUpperCase(char ch) 判断这个字符是不是大写字母

Character.isWhitespace(char ch) 判断这个字母是不是一种空格

Character.toLowerCase(char ch) 把这个字母转换成小写

Character.toUpperCase(char ch) 把这个字母转换成大写

举报

相关推荐

Java基础day06

【day06】Java方法基础认识

Java学习day06

Java自学 day06

Day06

java学习笔记day06

Day06 方法

0 条评论