- 数组缺陷
- 长度固定不变,不能很好的适应元素数量和动态变化
- 可以通过数组名.length获取数组的长度,却无法直接获取数组中真实存储对象的个数
- 在进行操作数组时效率低下
- 集合框架
集合框架是为表示和操作集合而规定的一种统一的标准体系结构。包含三大块内容:
对外的接口,接口的实现,对集合运算的算法
接口:表示集合的抽象的数据类型
实现:集合框架中接口的具体实现
算法:在一个实现了某个集合框架中的接口的对象身上完成某种有用的计算方法
- java集合接口
两大类接口:Collection 和 Map
三大类接口:list set Map (list 和 set继承Collection)
Collection接口存储一组不唯一(允许重复),无序的对象
Set接口继承Collection接口,存储一组唯一(不允许重复),的对象
List接口继承Collection接口,存储一组不唯一(允许重复的对象),有序的对象
Map接口存储一组成对的 键-值 对象,提供 key 到 value 的映射。Map中的key不要求有序,不允许重复
。Value同样不要求有序,但允许重复。
Iterator接口是负责定义访问和遍历元素的接口
- List接口
List接口的常用类有ArrayList和LinkedList。他们都可以所有类型的对象,包括null 允许重复并且都保证元素的存储顺序。
- Arraylist对数组进行了封装,实现了长度可变的数组。Arraylist 存储数据的方式和数组相同,都是内存中连续分配空间,它的优点在于便利元素和随机访问元素的效率比较高
- LinkedList采用链表存储方式,优点在于插入,删除元素时效率比较高。它提供了额外的addFist(),
addLast(),removeFirst(),removeLast()等方法,可以在LinkedList的手首部或尾部进行插入或删除操作。
这些方法使得LinkedList()可被用作堆栈(stack)或者队列(queue)
- ArrayList集合类(方法)
- LinkedList集合类(方法)
| 构造方法摘要 | |
| LinkedList() | |
| LinkedList(Collection<? extends E> c) | |
| 方法摘要 | ||
| boolean | add(E e) | |
| void | add(int index, E element) | |
| boolean | addAll(Collection<? extends E> c) | |
| boolean | addAll(int index, Collection<? extends E> c) | |
| void | addFirst(E e) | |
| void | addLast(E e) | |
| void | clear() | |
| Object | clone() | |
| boolean | contains(Object o) | |
| Iterator<E> | descendingIterator() | |
| E | element() | |
| E | get(int index) | |
| E | getFirst() | |
| E | getLast() | |
| int | indexOf(Object o) | |
| int | lastIndexOf(Object o) | |
| ListIterator<E> | listIterator(int index) | |
| boolean | offer(E e) | |
| boolean | offerFirst(E e) | |
| boolean | offerLast(E e) | |
| E | peek() | |
| E | peekFirst() | |
| E | peekLast() | |
| E | poll() | |
| E | pollFirst() | |
| E | pollLast() | |
| 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() | |
| toArray(T[] a) | |
- HashSet集合类(方法)
| 构造方法摘要 | |
| HashSet() | |
| HashSet(Collection<? extends E> c) | |
| HashSet(int initialCapacity) | |
| HashSet(int initialCapacity, float loadFactor) | |
| 方法摘要 | |
| boolean | add(E e) |
| void | clear() |
| Object | clone() |
| boolean | contains(Object o) |
| boolean | isEmpty() |
| Iterator<E> | iterator() |
| boolean | remove(Object o) |
| int | size() |
| 构造方法摘要 | |
| TreeSet() | |
| TreeSet(Collection<? extends E> c) | |
| TreeSet(Comparator<? super E> comparator) | |
| TreeSet(SortedSet<E> s) | |
| 方法摘要 | |
| boolean | add(E e) |
| boolean | addAll(Collection<? extends E> c) |
| E | ceiling(E e) |
| void | clear() |
| Object | clone() |
| Comparator<? super E> | comparator() |
| boolean | contains(Object o) |
| Iterator<E> | descendingIterator() |
| NavigableSet<E> | descendingSet() |
| E | first() |
| E | floor(E e) |
| SortedSet<E> | headSet(E toElement) |
| NavigableSet<E> | headSet(E toElement, boolean inclusive) |
| E | higher(E e) |
| boolean | isEmpty() |
| Iterator<E> | iterator() |
| E | last() |
| E | lower(E e) |
| E | pollFirst() |
| E | pollLast() |
| boolean | remove(Object o) |
| int | size() |
| NavigableSet<E> | subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) |
| SortedSet<E> | subSet(E fromElement, E toElement) |
| SortedSet<E> | tailSet(E fromElement) |
| NavigableSet<E> | tailSet(E fromElement, boolean inclusive) |
9.Map接口
HashMap集合类(指定元素效率高)
| 构造方法摘要 | |
| HashMap() | |
| HashMap(int initialCapacity) | |
| HashMap(int initialCapacity, float loadFactor) | |
| HashMap(Map<? extends K,? extends V> m) | |
| 方法摘要 | |
| void | clear() |
| Object | clone() |
| boolean | containsKey(Object key) |
| boolean | containsValue(Object value) |
| Set<Map.Entry<K,V>> | entrySet() |
| V | get(Object key) |
| boolean | isEmpty() |
| Set<K> | keySet() |
| V | put(K key, V value) |
| void | putAll(Map<? extends K,? extends V> m) |
| V | remove(Object key) |
| int | size() |
| Collection<V> | values() |
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) |
| K | ceilingKey(K key) |
| void | clear() |
| Object | clone() |
| Comparator<? super K> | comparator() |
| boolean | containsKey(Object key) |
| boolean | containsValue(Object value) |
| NavigableSet<K> | descendingKeySet() |
| NavigableMap<K,V> | descendingMap() |
| Set<Map.Entry<K,V>> | entrySet() |
| Map.Entry<K,V> | firstEntry() |
| K | firstKey() |
| Map.Entry<K,V> | floorEntry(K key) |
| K | floorKey(K key) |
| V | get(Object key) |
| SortedMap<K,V> | headMap(K toKey) |
| NavigableMap<K,V> | headMap(K toKey, boolean inclusive) |
| Map.Entry<K,V> | higherEntry(K key) |
| K | higherKey(K key) |
| Set<K> | keySet() |
| Map.Entry<K,V> | lastEntry() |
| K | lastKey() |
| Map.Entry<K,V> | lowerEntry(K key) |
| K | lowerKey(K key) |
| NavigableSet<K> | navigableKeySet() |
| Map.Entry<K,V> | pollFirstEntry() |
| Map.Entry<K,V> | pollLastEntry() |
| V | put(K key, V value) |
| void | putAll(Map<? extends K,? extends V> map) |
| V | remove(Object key) |
| int | size() |
| NavigableMap<K,V> | subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) |
| SortedMap<K,V> | subMap(K fromKey, K toKey) |
| SortedMap<K,V> | tailMap(K fromKey) |
| NavigableMap<K,V> | tailMap(K fromKey, boolean inclusive) |
| Collection<V> | values() |
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.属性或方法
}
- 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();
- 字符串-基本数据类型
public static type paseType(String type)
Int num=Integer.paseInt(“36”);
Boolean bool=Boolean.paseBoolean(“true”);
文章详细介绍了Java集合框架,包括Collection、Map接口及其子接口如List、Set和Map的特性。ArrayList和LinkedList作为List接口的实现,各有优缺点,适用于不同的操作场景。HashSet和TreeSet作为Set的实现,提供唯一元素的存储。HashMap和TreeMap作为Map的实现,分别注重效率和排序。文章还提到了迭代器和foreach循环在遍历集合中的作用,以及泛型在集合中的应用,提高了代码的类型安全性和效率。
237

被折叠的 条评论
为什么被折叠?



