Java中 List, Map, Stack, Queue, Set 的介绍
2017-12-24 12:06
531 查看
Java 的集合框架是应该掌握好的,下面,从 List, Map, Stack, Queue, Set 这几个方面,来记录吧。
1. 数组与集合
数据(可以存储基础数据类型)是存储对象的一种容器,数组的长度是固定的,不适合在对象个数未知的情况下使用。
集合(只能存储对象,且对象类型不唯一)的长度是可变的,适用性更广。
2. 下图是集合框架中接口与类(常用)的结构图:
3. Iterable & Collection & Map
Collection类是集合类的根接口,Java 中没有提供这个接口的直接实现类,而是用两个接口扩展了这个接口:Set, Link. 这两个子接口,定义了更严格的集合规则。Set 中不能包含相同的元素(通常的集合);Link 是一个有序的集合,可以包含重复元素,提供了按索引访问的方式。
Map 是 java.util 包的另外一个接口,Map 包含了key-value 对,当然不能包含重复的key, 但可以有重复的value。
Iterable 接口,所有的集合类(除了Map接口那一支)都实现了的接口,它用来遍历集合中所有元素,它主要方法是:
而 iterator 也是一个接口,它的主要方法是:
4. 遍历
类集提供了以下四种常见的遍历方式:
(1) Iterator:迭代器,是使用最多的方式。
(2) ListIterator:是Iterator的子接口,专门用于List 的迭代输出。
(3) foreach:实现了 Iterable 接口的类,可以使用该语句。
(4) for循环。
示例:
for语句 —— for(int i = 0; i < arr.size(); i++) { ... }
foreach语句 —— for(int i : arr) { ... }
Iterator 方式 ——
Iterator iterator = arr.interator();
while(iterator.hasNext()) {Object o = iterator.next(); ...}
5. LinkedList & ArrayList
LinkedList 和 ArrayList 由于地层实现不一样,前者是链表,后者是数组。因此,在使用时,LinkedList 使用在增删操作较多、查询操作较少的情况,ArrayList 则相反。
6. Map
Map接口的实现类有:HashMap, TreeMap 等。
HashMap 是最常用的 Map. 在遍历 HashMap 时,顺序是随机的。
TreeMap 是有序的Map.
7. 对Array, ArrayList 的排序
Array 即数组,ArrayList 即长度可变数组。数组的排序,使用 java.util.Arrays.sort();ArrayList 排序使用 java.util.Collectons.sort() 。
代码示例如下
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
public class createNewPackage {
public static void main(String[] args){
//基本类型数据
int[] aaa = {5,3,4,1,2};
Arrays.sort(aaa);
for(int i :aaa) System.out.println(i);
//对象类型数据,请实现对象的Comparable接口,最好也重写一下toString()方法
people[] threepeople = new people[3];
threepeople[0] = new people(20,"Alice");
threepeople[1] = new people(10,"Bob");
threepeople[2] = new people(15,"Jack");
Arrays.sort(threepeople);
for(people m : threepeople) System.out.println(m);
//ArrayList
ArrayList al = new ArrayList();
al.add(new people(30,"Yin"));
al.add(new people(10,"Yu"));
al.add(new people(20,"Hu"));
Collections.sort(al);
// 不能使用for each 了,因此使用迭代器
Iterator iterator = al.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
8. 对List 去重
待补充...
9. 实现最近最少使用 cache
待补充... 使用 LinkedHashMap
1. 数组与集合
数据(可以存储基础数据类型)是存储对象的一种容器,数组的长度是固定的,不适合在对象个数未知的情况下使用。
集合(只能存储对象,且对象类型不唯一)的长度是可变的,适用性更广。
2. 下图是集合框架中接口与类(常用)的结构图:
3. Iterable & Collection & Map
Collection类是集合类的根接口,Java 中没有提供这个接口的直接实现类,而是用两个接口扩展了这个接口:Set, Link. 这两个子接口,定义了更严格的集合规则。Set 中不能包含相同的元素(通常的集合);Link 是一个有序的集合,可以包含重复元素,提供了按索引访问的方式。
Map 是 java.util 包的另外一个接口,Map 包含了key-value 对,当然不能包含重复的key, 但可以有重复的value。
Iterable 接口,所有的集合类(除了Map接口那一支)都实现了的接口,它用来遍历集合中所有元素,它主要方法是:
Iterator<T> iterator(); //返回一个迭代器Iterator,而Iterator也是一个接口所以有很大的自由,
而 iterator 也是一个接口,它的主要方法是:
public interface Iterator<E> { boolean hasNext(); E next(); default void remove() { throw new UnsupportedOperationException("remove"); } default void forEachRemaining(Consumer<? super E> action) { Objects.requireNonNull(action); while (hasNext()) action.accept(next()); } }
4. 遍历
类集提供了以下四种常见的遍历方式:
(1) Iterator:迭代器,是使用最多的方式。
(2) ListIterator:是Iterator的子接口,专门用于List 的迭代输出。
(3) foreach:实现了 Iterable 接口的类,可以使用该语句。
(4) for循环。
示例:
for语句 —— for(int i = 0; i < arr.size(); i++) { ... }
foreach语句 —— for(int i : arr) { ... }
Iterator 方式 ——
Iterator iterator = arr.interator();
while(iterator.hasNext()) {Object o = iterator.next(); ...}
5. LinkedList & ArrayList
LinkedList 和 ArrayList 由于地层实现不一样,前者是链表,后者是数组。因此,在使用时,LinkedList 使用在增删操作较多、查询操作较少的情况,ArrayList 则相反。
6. Map
Map接口的实现类有:HashMap, TreeMap 等。
HashMap 是最常用的 Map. 在遍历 HashMap 时,顺序是随机的。
TreeMap 是有序的Map.
7. 对Array, ArrayList 的排序
Array 即数组,ArrayList 即长度可变数组。数组的排序,使用 java.util.Arrays.sort();ArrayList 排序使用 java.util.Collectons.sort() 。
代码示例如下
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
public class createNewPackage {
public static void main(String[] args){
//基本类型数据
int[] aaa = {5,3,4,1,2};
Arrays.sort(aaa);
for(int i :aaa) System.out.println(i);
//对象类型数据,请实现对象的Comparable接口,最好也重写一下toString()方法
people[] threepeople = new people[3];
threepeople[0] = new people(20,"Alice");
threepeople[1] = new people(10,"Bob");
threepeople[2] = new people(15,"Jack");
Arrays.sort(threepeople);
for(people m : threepeople) System.out.println(m);
//ArrayList
ArrayList al = new ArrayList();
al.add(new people(30,"Yin"));
al.add(new people(10,"Yu"));
al.add(new people(20,"Hu"));
Collections.sort(al);
// 不能使用for each 了,因此使用迭代器
Iterator iterator = al.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
8. 对List 去重
待补充...
9. 实现最近最少使用 cache
待补充... 使用 LinkedHashMap
相关文章推荐
- Java:常用集合类(List、Map、Set、Queue、Stack)
- JAVA Map、Set、List、Queue、Stack的特点与用法
- 【Java基础】 (List、Set、Map、Stack、Queue)总结
- Stack和Queue:后进先出和先进先出和Java 实现后进先出(LIFO)及Stac和Java集合类: Set、List、Map、Queue使用场景梳理 - .Little Hann
- java 集合(set、list、map、stack、queue)的用法
- java中List、Map、Set、Collection、Stack、Queue等的使用
- STL 整理(map、set、vector、list、stack、queue、deque、priority_queue)
- STL 收拾(map、set、vector、list、stack、queue、deque、priority_queue)...
- Java Collections Framework - Java集合框架List,Map,Set等全面介绍之概要篇
- Java中容器[Collection(List,Set,Queue),Map],迭代器(Iterator)和比较器(Comparator)及列表排序
- STL 整理(map、set、vector、list、stack、queue、deque、priority_queue)
- STL 整理(map、set、vector、list、stack、queue、deque、priority_queue)
- STL 整理(map、set、vector、list、stack、queue、deque、priority_queue)
- Map、Set、List、Queue、Stack的特点与用法1
- STL 整理(map、set、vector、list、stack、queue、deque、priority_queue)
- Java 深入学习(1) —— 容器类(集合类)Set、List、Queue、Map 之间的区别
- Map、Set、List、Queue、Stack的特点与用法
- Java数据结构Map,List,Set及Queue相关的类图
- Map、Set、List、Queue、Stack的特点与用法1
- 【Java】Collection,set,List,Map介绍(附实例)