Java集合框架

文章详细介绍了Java集合框架,包括Collection、Map接口及其子接口如List、Set和Map的特性。ArrayList和LinkedList作为List接口的实现,各有优缺点,适用于不同的操作场景。HashSet和TreeSet作为Set的实现,提供唯一元素的存储。HashMap和TreeMap作为Map的实现,分别注重效率和排序。文章还提到了迭代器和foreach循环在遍历集合中的作用,以及泛型在集合中的应用,提高了代码的类型安全性和效率。
  1. 数组缺陷
  1. 长度固定不变,不能很好的适应元素数量和动态变化
  2. 可以通过数组名.length获取数组的长度,却无法直接获取数组中真实存储对象的个数
  3. 在进行操作数组时效率低下
  1. 集合框架

集合框架是为表示和操作集合而规定的一种统一的标准体系结构。包含三大块内容:

对外的接口,接口的实现,对集合运算的算法

接口:表示集合的抽象的数据类型

实现:集合框架中接口的具体实现

算法:在一个实现了某个集合框架中的接口的对象身上完成某种有用的计算方法

  1. java集合接口

两大类接口:Collection 和 Map

三大类接口:list  set   Map (list 和 set继承Collection)

Collection接口存储一组不唯一(允许重复),无序的对象

Set接口继承Collection接口,存储一组唯一(不允许重复),的对象

List接口继承Collection接口,存储一组不唯一(允许重复的对象),有序的对象

Map接口存储一组成对的 键-值 对象,提供 key 到 value 的映射。Map中的key不要求有序,不允许重复

。Value同样不要求有序,但允许重复。

Iterator接口是负责定义访问和遍历元素的接口

  1. List接口

List接口的常用类有ArrayList和LinkedList。他们都可以所有类型的对象,包括null 允许重复并且都保证元素的存储顺序。

  1. Arraylist对数组进行了封装,实现了长度可变的数组。Arraylist 存储数据的方式和数组相同,都是内存中连续分配空间,它的优点在于便利元素和随机访问元素的效率比较高
  2. LinkedList采用链表存储方式,优点在于插入,删除元素时效率比较高。它提供了额外的addFist(),

addLast(),removeFirst(),removeLast()等方法,可以在LinkedList的手首部或尾部进行插入或删除操作。

这些方法使得LinkedList()可被用作堆栈(stack)或者队列(queue)

  1. ArrayList集合类(方法)

  1. LinkedList集合类(方法)

构造方法摘要

LinkedList() 
          构造一个空列表。

LinkedList(Collection<? extends E> c) 
          构造一个包含指定 collection 中的元素的列表,这些元素按其 collection 的迭代器返回的顺序排列。

 

方法摘要

 boolean

add(E e) 
          将指定元素添加到此列表的结尾。

 void

add(int index, E element) 
          在此列表中指定的位置插入指定的元素。

 boolean

addAll(Collection<? extends E> c) 
          添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序。

 boolean

addAll(int index, Collection<? extends E> c) 
          将指定 collection 中的所有元素从指定位置开始插入此列表。

 void

addFirst(E e) 
          将指定元素插入此列表的开头。

 void

addLast(E e) 
          将指定元素添加到此列表的结尾。

 void

clear() 
          从此列表中移除所有元素。

 Object

clone() 
          返回此 LinkedList 的浅表副本。

 boolean

contains(Object o) 
          如果此列表包含指定元素,则返回 true。

 Iterator<E>

descendingIterator() 
          返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。

 E

element() 
          获取但不移除此列表的头(第一个元素)。

 E

get(int index) 
          返回此列表中指定位置处的元素。

 E

getFirst() 
          返回此列表的第一个元素。

 E

getLast() 
          返回此列表的最后一个元素。

 int

indexOf(Object o) 
          返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。

 int

lastIndexOf(Object o) 
          返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。

 ListIterator<E>

listIterator(int index) 
          返回此列表中的元素的列表迭代器(按适当顺序),从列表中指定位置开始。

 boolean

offer(E e) 
          将指定元素添加到此列表的末尾(最后一个元素)。

 boolean

offerFirst(E e) 
          在此列表的开头插入指定的元素。

 boolean

offerLast(E e) 
          在此列表末尾插入指定的元素。

 E

peek() 
          获取但不移除此列表的头(第一个元素)。

 E

peekFirst() 
          获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。

 E

peekLast() 
          获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。

 E

poll() 
          获取并移除此列表的头(第一个元素)

 E

pollFirst() 
          获取并移除此列表的第一个元素;如果此列表为空,则返回 null。

 E

pollLast() 
          获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。

 E

pop() 
          从此列表所表示的堆栈处弹出一个元素。

 void

push(E e) 
          将元素推入此列表所表示的堆栈。

 E

remove() 
          获取并移除此列表的头(第一个元素)。

 E

remove(int index) 
          移除此列表中指定位置处的元素。

 boolean

remove(Object o) 
          从此列表中移除首次出现的指定元素(如果存在)。

 E

removeFirst() 
          移除并返回此列表的第一个元素。

 boolean

removeFirstOccurrence(Object o) 
          从此列表中移除第一次出现的指定元素(从头部到尾部遍历列表时)。

 E

removeLast() 
          移除并返回此列表的最后一个元素。

 boolean

removeLastOccurrence(Object o) 
          从此列表中移除最后一次出现的指定元素(从头部到尾部遍历列表时)。

 E

set(int index, E element) 
          将此列表中指定位置的元素替换为指定的元素。

 int

size() 
          返回此列表的元素数。

 Object[]

toArray() 
          返回以适当顺序(从第一个元素到最后一个元素)包含此列表中所有元素的数组。

<T> T[]

toArray(T[] a) 
          返回以适当顺序(从第一个元素到最后一个元素)包含此列表中所有元素的数组;返回数组的运行时类型为指定数组的类型。

  

  1. HashSet集合类(方法)

构造方法摘要

HashSet() 
          构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。

HashSet(Collection<? extends E> c) 
          构造一个包含指定 collection 中的元素的新 set。

HashSet(int initialCapacity) 
          构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和默认的加载因子(0.75)。

HashSet(int initialCapacity, float loadFactor) 
          构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和指定的加载因子。

 

方法摘要

 boolean

add(E e) 
          如果此 set 中尚未包含指定元素,则添加指定元素。

 void

clear() 
          从此 set 中移除所有元素。

 Object

clone() 
          返回此 HashSet 实例的浅表副本:并没有复制这些元素本身。

 boolean

contains(Object o) 
          如果此 set 包含指定元素,则返回 true。

 boolean

isEmpty() 
          如果此 set 不包含任何元素,则返回 true。

 Iterator<E>

iterator() 
          返回对此 set 中元素进行迭代的迭代器。

 boolean

remove(Object o) 
          如果指定元素存在于此 set 中,则将其移除。

 int

size() 
          返回此 set 中的元素的数量(set 的容量)。

   

8.TreeSet集合类

构造方法摘要

TreeSet() 
          构造一个新的空 set,该 set 根据其元素的自然顺序进行排序。

TreeSet(Collection<? extends E> c) 
          构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行排序。

TreeSet(Comparator<? super E> comparator) 
          构造一个新的空 TreeSet,它根据指定比较器进行排序。

TreeSet(SortedSet<E> s) 
          构造一个与指定有序 set 具有相同映射关系和相同排序的新 TreeSet

 

方法摘要

 boolean

add(E e) 
          将指定的元素添加到此 set(如果该元素尚未存在于 set 中)。

 boolean

addAll(Collection<? extends E> c) 
          将指定 collection 中的所有元素添加到此 set 中。

 E

ceiling(E e) 
          返回此 set 中大于等于给定元素的最小元素;如果不存在这样的元素,则返回 null。

 void

clear() 
          移除此 set 中的所有元素。

 Object

clone() 
          返回 TreeSet 实例的浅表副本。

 Comparator<? super E>

comparator() 
          返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回 null。

 boolean

contains(Object o) 
          如果此 set 包含指定的元素,则返回 true。

 Iterator<E>

descendingIterator() 
          返回在此 set 元素上按降序进行迭代的迭代器。

 NavigableSet<E>

descendingSet() 
          返回此 set 中所包含元素的逆序视图。

 E

first() 
          返回此 set 中当前第一个(最低)元素。

 E

floor(E e) 
          返回此 set 中小于等于给定元素的最大元素;如果不存在这样的元素,则返回 null。

 SortedSet<E>

headSet(E toElement) 
          返回此 set 的部分视图,其元素严格小于 toElement。

 NavigableSet<E>

headSet(E toElement, boolean inclusive) 
          返回此 set 的部分视图,其元素小于(或等于,如果 inclusive 为 true)toElement。

 E

higher(E e) 
          返回此 set 中严格大于给定元素的最小元素;如果不存在这样的元素,则返回 null。

 boolean

isEmpty() 
          如果此 set 不包含任何元素,则返回 true。

 Iterator<E>

iterator() 
          返回在此 set 中的元素上按升序进行迭代的迭代器。

 E

last() 
          返回此 set 中当前最后一个(最高)元素。

 E

lower(E e) 
          返回此 set 中严格小于给定元素的最大元素;如果不存在这样的元素,则返回 null。

 E

pollFirst() 
          获取并移除第一个(最低)元素;如果此 set 为空,则返回 null。

 E

pollLast() 
          获取并移除最后一个(最高)元素;如果此 set 为空,则返回 null。

 boolean

remove(Object o) 
          将指定的元素从 set 中移除(如果该元素存在于此 set 中)。

 int

size() 
          返回 set 中的元素数(set 的容量)。

 NavigableSet<E>

subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) 
          返回此 set 的部分视图,其元素范围从 fromElement 到 toElement。

 SortedSet<E>

subSet(E fromElement, E toElement) 
          返回此 set 的部分视图,其元素从 fromElement(包括)到 toElement(不包括)。

 SortedSet<E>

tailSet(E fromElement) 
          返回此 set 的部分视图,其元素大于等于 fromElement。

 NavigableSet<E>

tailSet(E fromElement, boolean inclusive) 
          返回此 set 的部分视图,其元素大于(或等于,如果 inclusive 为 true)fromElement。

9.Map接口

HashMap集合类(指定元素效率高)

构造方法摘要

HashMap() 
          构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap

HashMap(int initialCapacity) 
          构造一个带指定初始容量和默认加载因子 (0.75) 的空 HashMap

HashMap(int initialCapacity, float loadFactor) 
          构造一个带指定初始容量和加载因子的空 HashMap

HashMap(Map<? extends K,? extends V> m) 
          构造一个映射关系与指定 Map 相同的新 HashMap

 

方法摘要

 void

clear() 
          从此映射中移除所有映射关系。

 Object

clone() 
          返回此 HashMap 实例的浅表副本:并不复制键和值本身。

 boolean

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

 boolean

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

 Set<Map.Entry<K,V>>

entrySet() 
          返回此映射所包含的映射关系的 Set 视图。

 V

get(Object key) 
          返回指定键所映射的值;如果对于该键来说,此映射不包含任何映射关系,则返回 null。

 boolean

isEmpty() 
          如果此映射不包含键-值映射关系,则返回 true。

 Set<K>

keySet() 
          返回此映射中所包含的键的 Set 视图。

 V

put(K key, V value) 
          在此映射中关联指定值与指定键。

 void

putAll(Map<? extends K,? extends V> m) 
          将指定映射的所有映射关系复制到此映射中,这些映射关系将替换此映射目前针对指定映射中所有键的所有映射关系。

 V

remove(Object key) 
          从此映射中移除指定键的映射关系(如果存在)。

 int

size() 
          返回此映射中的键-值映射关系数。

 Collection<V>

values() 
          返回此映射所包含的值的 Collection 视图。

TreeMap集合类

构造方法摘要

TreeMap() 
          使用键的自然顺序构造一个新的、空的树映射。

TreeMap(Comparator<? super K> comparator) 
          构造一个新的、空的树映射,该映射根据给定比较器进行排序。

TreeMap(Map<? extends K,? extends V> m) 
          构造一个与给定映射具有相同映射关系的新的树映射,该映射根据其键的自然顺序 进行排序。

TreeMap(SortedMap<K,? extends V> m) 
          构造一个与指定有序映射具有相同映射关系和相同排序顺序的新的树映射。

 

方法摘要

 Map.Entry<K,V>

ceilingEntry(K key) 
          返回一个键-值映射关系,它与大于等于给定键的最小键关联;如果不存在这样的键,则返回 null。

 K

ceilingKey(K key) 
          返回大于等于给定键的最小键;如果不存在这样的键,则返回 null。

 void

clear() 
          从此映射中移除所有映射关系。

 Object

clone() 
          返回此 TreeMap 实例的浅表副本。

 Comparator<? super K>

comparator() 
          返回对此映射中的键进行排序的比较器;如果此映射使用键的自然顺序,则返回 null。

 boolean

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

 boolean

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

 NavigableSet<K>

descendingKeySet() 
          返回此映射中所包含键的逆序 NavigableSet 视图。

 NavigableMap<K,V>

descendingMap() 
          返回此映射中所包含映射关系的逆序视图。

 Set<Map.Entry<K,V>>

entrySet() 
          返回此映射中包含的映射关系的 Set 视图。

 Map.Entry<K,V>

firstEntry() 
          返回一个与此映射中的最小键关联的键-值映射关系;如果映射为空,则返回 null。

 K

firstKey() 
          返回此映射中当前第一个(最低)键。

 Map.Entry<K,V>

floorEntry(K key) 
          返回一个键-值映射关系,它与小于等于给定键的最大键关联;如果不存在这样的键,则返回 null。

 K

floorKey(K key) 
          返回小于等于给定键的最大键;如果不存在这样的键,则返回 null。

 V

get(Object key) 
          返回指定键所映射的值,如果对于该键而言,此映射不包含任何映射关系,则返回 null。

 SortedMap<K,V>

headMap(K toKey) 
          返回此映射的部分视图,其键值严格小于 toKey。

 NavigableMap<K,V>

headMap(K toKey, boolean inclusive) 
          返回此映射的部分视图,其键小于(或等于,如果 inclusive 为 true)toKey。

 Map.Entry<K,V>

higherEntry(K key) 
          返回一个键-值映射关系,它与严格大于给定键的最小键关联;如果不存在这样的键,则返回 null。

 K

higherKey(K key) 
          返回严格大于给定键的最小键;如果不存在这样的键,则返回 null。

 Set<K>

keySet() 
          返回此映射包含的键的 Set 视图。

 Map.Entry<K,V>

lastEntry() 
          返回与此映射中的最大键关联的键-值映射关系;如果映射为空,则返回 null。

 K

lastKey() 
          返回映射中当前最后一个(最高)键。

 Map.Entry<K,V>

lowerEntry(K key) 
          返回一个键-值映射关系,它与严格小于给定键的最大键关联;如果不存在这样的键,则返回 null。

 K

lowerKey(K key) 
          返回严格小于给定键的最大键;如果不存在这样的键,则返回 null。

 NavigableSet<K>

navigableKeySet() 
          返回此映射中所包含键的 NavigableSet 视图。

 Map.Entry<K,V>

pollFirstEntry() 
          移除并返回与此映射中的最小键关联的键-值映射关系;如果映射为空,则返回 null。

 Map.Entry<K,V>

pollLastEntry() 
          移除并返回与此映射中的最大键关联的键-值映射关系;如果映射为空,则返回 null。

 V

put(K key, V value) 
          将指定值与此映射中的指定键进行关联。

 void

putAll(Map<? extends K,? extends V> map) 
          将指定映射中的所有映射关系复制到此映射中。

 V

remove(Object key) 
          如果此 TreeMap 中存在该键的映射关系,则将其删除。

 int

size() 
          返回此映射中的键-值映射关系数。

 NavigableMap<K,V>

subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) 
          返回此映射的部分视图,其键的范围从 fromKey 到 toKey。

 SortedMap<K,V>

subMap(K fromKey, K toKey) 
          返回此映射的部分视图,其键值的范围从 fromKey(包括)到 toKey(不包括)。

 SortedMap<K,V>

tailMap(K fromKey) 
          返回此映射的部分视图,其键大于等于 fromKey。

 NavigableMap<K,V>

tailMap(K fromKey, boolean inclusive) 
          返回此映射的部分视图,其键大于(或等于,如果 inclusive 为 true)fromKey。

 Collection<V>

values() 
          返回此映射包含的值的 Collection 视图。

 

10.迭代器Iterator

Iterator为集合而生,专门实现集合的遍历。它隐藏了各种集合实现类的内部细节,提供了遍历集合的统一

编程接口

11.集合接口的iterator()方法返回一个Iterator对象,然后通过Iterator接口的两个方法实现遍历

Boolean  hasNext():判断是否另一个访问的元素

Object next():返回要访问的下一个元素

void remove():

从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。每次调用 next 只能调用一次此方法。如果进行迭代时用调用此方法之外的其他方式修改了该迭代器所指向的 collection,则迭代器的行为是不确定的。

键值对遍历(未使用泛型操作数据要强制类型转换):

HashMap map=new HashMap();

Set keys=map.KeySet();

Iterator it=keys.iterator();

While(it.hasNext())

{

String key=(String)it.next();

Dog dog=(Dog)Map.get(key);

}

List接口遍历(未使用泛型操作数据要强制类型转换):

List list=new ArrayList();

Iterator it=list.iterator();

while(it.hasNext())

{

Dog  dog=(Dog)it.next();

}

Set接口遍历(未使用泛型操作数据要强制类型转换):

Set dogs=new HashSet();

Iterator iterator=dogs.iterator();

while (iterator.hasNext()) {

Dog dog=(Dog)iterator.next();

}

12.foreach循环

for(元素类型T 元素变量X:数组或集合对象){

}

遍历list接口

List list=new Arraylist();

for(Object obj:list){

String s=(String)obj;

}

遍历Map接口

HashMap map=new HashMap();

Set keys=map.KeySet();

for(Object obj:map){

Dog dog=(Dog)map.get(obj);

}

13.泛型集合

使用泛型集合在创建集合对象时,指定集合中的元素类型,从集合中取出元素时无需类型转换,并且如果把非常指定类型对象放入集合,会出现编译错误

应用:

(1)List<Dog> list=new ArratList<Dog>();

for(Dog dog:list)

{

dog.属性或方法

}

  1. Map<String,Dog>  dogs=new HashMap<Strng,Dog>();

Set<string> keys=dogs.keySet();

Iterator<String> it=keys.iterator();

for(it.hasNext())

{

String key=it.next();

Dog dog=dogs.get(key);

dog.属性;

}

14.java包装类

包装类是指将一个基本类型封装到一个类中,也就是将基本类型包装成一个类类型

Object

Boolean   Number  Character

Byte  Short   Integer  Long   Float   Double

包装类在javalong包中,共有八个包装类

Boolean类包装布尔类型,Character类包装的字符

包装所有的数字类型的类都继承自Number类,Number类是一个抽象类

包装了Byte  Short   Integer  Long   Float   Double 等数字类型,并实现了它所定义的方法,

这些方法已不同数字格式返回对象的值

应用:

构造方法

Public Type(type value)

Type表示包装类,type代表基本数据类型

Integer intValue=new Integer(21);

一旦创了某个包装类对象,该对象所代表的值不能被更改

类型转换

(1)包装类-基本数据类型

Public  type typeValue()

Integer intid=new Integer(21);

Int num=intid.intValue();

Integer intid=Intege.valueOf(10);

Int num2=intid.intValue();

  1. 字符串-基本数据类型

public static type paseType(String type)

Int num=Integer.paseInt(“36”);

Boolean bool=Boolean.paseBoolean(“true”);

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值