java容器
前言
容器,顾名思义,利用各种数据结构底层(具有不同的特性)来实现盛放数据。
本人在此没有赘述基本概念,仅仅进行了java集合整体分析
一、一眼看穿java容器?
废话少说,上图
当然这是个人简化版,简单介绍一下
1.不同实现方式,Array,Linked List,Tree,Hash table
2.Hash table 实现方式无序,Tree实现方式有序,但速度较hash table稍慢
3. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
二、须牢记
1.Collections类
java.util.Collections类提供了一些静态方法实现类基于List容器的一些算法。
look look?
void sort(List<T> list)
sort对List中元素排序
void shuffle(List<?> list)
对List容器中对象随机排序
void reverse(List<?> list)
对List容器中对象逆序排列
void fill(List<? super T> list,T obj)
用一个特定容器重写整个List容器
int binarySearch( list, key)
对于顺序的list,二分法查找特定对象
void copy(List<? super T> dest, List<? extends T> src)
将src List内容复制到dest list中
2.Iterator迭代器
Iterator“三剑客”上场:
boolean hasNext()
E next()
default void remove()
上图(图示函数作用)
实例(引于菜鸟)
// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;
public class RunoobTest {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(12);
numbers.add(8);
numbers.add(2);
numbers.add(23);
//获取迭代器
Iterator<Integer> it = numbers.iterator();
//循环获取
while(it.hasNext()) {
Integer i = it.next();
if(i < 10) {
it.remove(); // 删除小于 10 的元素
}
}
System.out.println(numbers);
}
}
3.ArrayList(List有索引)
实现类,新手目的学会使用
容器基本操作crud
- 添加
add()
- 访问
get()
- 修改
set()
- 删除
remove()
- 计算数量
size()
- 遍历
for()
for-each
4.LinkedList
与 ArrayList 相比,LinkedList 的增加和删除对操作效率更高,而查找和修改的操作效率较低(链表实现,自然,不懂得小伙伴复习下数据结构,另外,java中使用双向链表)
addFirst()
头部添加元素addLast()
在尾部添加元素add()
依次添加removeFirst()
removeLast()
remove()
(顾名思义)getFirst()
getLast()
get()
获取size()
计算大小for-each
for
遍历
5. HashSet
*HashSet 允许有 null 值
add()
添加contains()
查找判断元素是否存在于集合当中remove()
删除clear()
清空size()
数量for-each
遍历
6.HashMap(key-value)
//依旧是crud
put(key,value)
添加(key-value)get(key)
获取remove(key)
删除clear()
清空size()
计算大小for-each
迭代 ,如果你只想获取 key,可以使用keySet()
方法,然后可以通过get(key)
获取对应的 value,如果你只想获取 value,可以使用values()
方法
//sites 一个set对象
for (Integer i : Sites.keySet()) {
System.out.println("key: " + i + " value: " + Sites.get(i));
}
// 返回所有 value 值
for(String value: Sites.values()) {
// 输出每一个value
System.out.print(value + ", ");
}
7.Auto_boxing/unBoxing
import java.util.*;
public class TestMap2 {
public static void main(String args[]) {
Map<String, Integer> m1 = new HashMap<String , Integer>();
m1.put("one", 1);
m1.put("two", 2);
m1.put("three", 3);
System.out.println(m1.size());
System.out.println(m1.containsKey("one"));
if(m1.containsKey("two")) {
//int i = ((Integer)m1.get("two")).intValue();
int i = m1.get("two");
System.out.println(i);
}
}
}
方法返回是Object,我们需要强制类型转换,但是jdk已经帮我们实现