转载

简单理解:集合

集合是Java的一种容器,它位于java.util包下,主要包括:Collection(接口)、Map(接口)、集合工具类。

002.集合结构图

简单理解:集合

003.List接口

0031.特点

  • 有序的、允许有重复元素的集合

0032.主要的两个实现类:

  • ArrayList:底层基于数组,内存地址是连续的
  • LinkedList:底层基于双向链表,内存地址不连续

0033.ArrayList

  • 元素可以为一个或多个null;
  • 默认初始容量为10,当数组大小不足时,容量扩大1.5倍;
List<String> list = new ArrayList<>();
list.add("hua");
list.add("ming");
list.add("fan");
list.add(null);
list.add("hua");
list.add(null);
System.out.println(list); 

//输出
[hua, ming, fan, null, hua, null]
复制代码

0034.LinkedList

  • 元素可以为一个或多个null
  • 同时实现List和Deque接口

0035.ArrayList和LinkedList常用的几种方法:

void add(E element)             添加元素
void add(int i,E element)       指定位置添加元素
E get(int i)                    获取元素
E set(int i,E element)          替换元素
E remove(int i)                 移除元素
int size()                      元素数量
boolean isEmpty()               集合中没有元素,返回true
复制代码

0036.遍历的三种方式

//举以下例子
public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    for(int i=0;i<10;i++){
    	list.add(i);
    }
    System.out.println(list);
    
    //迭代器遍历
    Iterator<Integer> it = list.iterator();
    while(it.hasNext()){
    	System.out.print(it.next() +" ");
    }
    
    System.out.println();
    //遍历:增强型for循环
    for(Integer n:list){
    	System.out.print(n+" ");
    }
    
    System.out.println();
    //遍历:for
    for(int i=0;i<list.size();i++){
    	System.out.print(list.get(i)+" ");
    }	
}
复制代码

0037.应用场景

  • ArrayList更适合查询操作;
  • LinkedList更适合插入和删除操作;

004.Set接口

0041.特点

  • 无序的、不允许有重复元素的集合

0042.实现类

  • HashSet:底层基于HashMap实现
  • TreeSet:底层基于二叉树实现

0043.HashSet

  • 只允许一个null元素
Set<String> sh = new HashSet<>();
sh.add("fan");
sh.add(null);
sh.add("hua");
sh.add("ming");
sh.add("hua");//被过滤掉
sh.add(null); //被过滤掉
System.out.println(sh);//[null, fan, hua, ming]
复制代码

005.Map接口

0051.特点

  • 具有映射关系的集合
  • 数据以键值对(key-value)存储

0052.主要的两个实现类

  • HashMap:底层基于数组+链表(JDK7及之前),数组+链表+红黑树(JDK8)
  • HashTable:底层基于哈希表

0053.HashMap

  • 键唯一,值可以不唯一
  • 允许有null键和null值
  • Entry对象是无序排列的
  • 默认初始容量16,默认加载因子0.75

0054.HashMap常用方法

Object put(Object key,Object value)  添加
Object get(Object key)               查询
Object remove(Object key)            移除
int size()                           长度
复制代码

0055.代码

Map<Integer,String> map = new HashMap<>();
map.put(1, "wang");
map.put(2, "li");
map.put(3, "hua");
map.put(4, null);
map.put(5, null);
map.put(2, "fan"); //直接覆盖前面相同的key的value
map.put(null, null);//key value 可以为空
System.out.println(map);//{null=null, 1=wang, 2=fan, 3=hua, 4=null, 5=null}
复制代码

0056.遍历的方式

//方式一:遍历
for(Integer i:map.keySet()){
    System.out.println("key:"+i+" values:"+map.get(i));
}

//方式二:遍历
Iterator<Entry<Integer,String>> list = map.entrySet().iterator();
while(list.hasNext()){
    Entry<Integer,String>entry = list.next();
    System.out.println("key:"+entry.getKey()+" values:"+entry.getValue());
}
复制代码

006.工具类

  • Collections、Arrays:集合的工具类帮助类,提供了对集合元素排序、搜索及线程安全等操作;
  • Comparable、Comparator:一般用于对象比较来实现排序,两种略有区别;
原文  https://juejin.im/post/5dd2ae375188257322382d50
正文到此结束
Loading...