java 静态集合_Java集合

Colllection接口

List接口(列表)

List的特点

有序性

允许有重复的元素

List的常用方法

方法名称

描述

返回类型

add(Ele)

参数类型为Object (追加)

boolean

add(index,Ele)

指定位置添加元素

void

addAll(Col)

参数为Collection集合 (追加)

boolean

addALL(index,Col)

boolean

contains(Ele)

boolean

containsAll(Col)

boolean

clear()

移除列表中的所有元素

void

get(index)

返回索引为index的元素

void

isEmpty()

boolean

size()

返回列表中元素个数

int

remove(Ele/index)

boolean

removeAll(Col)

boolean

set(index,Ele)

将索引为index的元素替换为Ele

成功则,返回被被替换掉的元素

toArray

返回一个对象数组(数组元素的顺序与列表一样)

Object

ArrayList实现类

构造方法

ArrayList()

无参构造

ArrayLis(int Size)

指定初始容量

ArrayList(Col)

中的初始元素

Vector实现类

一般情况使用ArrayList代替

LinkedList实现类

构造方法

LinkedList()

无参构造

LinkedList(Col)

指定初始元素

List实现类

ArrayList的底层为数组LinkedList的底层为双链表

ArrayList和LinkedList的功能方法没有同步

数组转为列表

public static List asList(T array)//方法签名

public static void main(String[] args) {

Integer[] array = {1,3,4,2,423,11,234,23,42,34,23};

List lst = Arrays.asList(array);

System.out.println( lst );

//Iterator iterator = lst.iterator();

//while(iterator.hasNext()) {

//System.out.println( iterator.next());

//}

}

Set接口(集合)

Set的特点

无序性

不允许有重复的元素

Set的常用方法

add(Ele)

boolean

addAll(Col)

boolean

clear()

void

isEmpty()

boolean

remove(Ele)

boolean

removeAll(COl)

boolean

size()

int

contains(Ele)

boolean

retainAll(Col)

将参数集合中有的元素从Set集合中移除

boolean

toArray()

对象数组

HashSet实现类

构造方法

HashSet()

无差构造,默认容量16

HashSet(int Size)

指定初始容量

HashSet(COl)

指定初始元素

HashSet允许添加null值但只能添加一次

LinkedHashSet实现类

特点

采用双链表实现,有序,元素不重复。

构造方法

LinkedHashSet()

无参构造方法

初始容量16

LinkedHashSet(int Size)

LinkedHashSet( COl )

SortedSet接口与TreeSet实现类

特点:

SortedSet继承于Set接口,TreeSet为SortedSet的一个实现类

SortedSet是一个Sorted类型

实现该接口的类将按元素的天然顺序自动排序,与插入的顺序无关。

常用方法

first()

返回第一个元素(最小的元素)

Object

last()

..

Object

headSet(Ele)

返回一个包含小于Ele的SortedSet

sortedSet

tailSet(Ele)

...大于

sortedSet

subSet(fromEle,toEle)

返回>=formEle&&

sortedSet

TreeSet实现类

特点

天然有序,无论以什么顺序插入元素,在遍历的时候都是有序的

没有采用哈希存储策略,TreeSet采用的是二叉树结构存储

构造方法

方法名称

描述

TreeSet()

无参构造,创建一个空的TreeSet对象

TreeSet( SortedSet s)

含有指定元素

TreeSet( Col )

含有指定元素

TreeSet( Comparator c)

具有指定比较器的空TreeSet对象

定制SortedSet排序规则

实现Comparator接口(比较器)达到其他排序需求。(重写compare方法)

package test_02;

import java.util.*;

public class set_text {

public static void main(String[] args) {

Integer[] array = {1,3,4,2,4,11,234,23,42,34,23};

List lst = Arrays.asList(array);

Set sortSet = new TreeSet( new Agecompare() );

sortSet.addAll(lst);

System.out.println( sortSet );

}

public static class Agecompare implements Comparator {

public int compare(Integer o1, Integer o2) {

return (int)o2-(int)o1;//逆序

}

}

}

Map接口

特点

Map也被称为健/值集合。

键和值都是对象。

健对象用来在Map中唯一标识一个值对象。

健对象在Map中不能重复出现。*

Map接口的常用方法

clear()

void

containsKey(key)

boolean

containsValue(value)

boolean

get(key)

获取健名为key的健值

Object

isEmpty()

boolean

put(key,value)

如果存在key,这将value添加进去并与其关联,不存在这都添加然后关联起来

Object,返回value

putAll(Map t)

...

void

remove(key)

移除key所关联的值value,并将其值value返回

Object

size()

返回键值对的个数

int

HashMap 实现类

特点:

该类通过对键计算哈希码来决定值的存储。

键值允许为nul

无序

构造方法

方法名

描述

返回值类型

HashMap()

无参构造,初始容量为16

HashMap(Map m)

指定初始内容

Hashtable实现类

一般情况用HahMap代替

LinkedHahMap实现类

特点

通过双链表的方式实现Map

Oredered类型

插入删除效率比HashMap低。

顺序存储

构造方法

LinkedHashMap()

无参构造

LinkedHashMap(int Size)

LinkedHashMap(Map m)

SortedMap接口与TreeMap实现类

特点

SortedMap为一个继承于Map的接口,TreeMap为SortedMap的一个实现类。

实现SortedMap的接口类不管以什么顺序插入元素,都会按键的天然顺序自动排序。

SortedMap的常用方法

firstKey()

返回SortedMap中第一个对象(最小的元素)

Object

lastKey())

...最大..

Object

headSet(Ele)

SortMap

TrailSet(Ele)

SortMap

subSet(formElE,lastEle)

SortedMap

TreeMap实现类

特点

天然有序(一键名为依据)

构造方法

TreeMap()

无参构造,创建一个空的TreeMap对象

TreeMap(SortedMap s)

指定初始元素

TreeMap(Map c)

TreeMap(COmparator c)

指定比较器

java.uitl.Stack

继承于Vector类,利用Vector实现的

Stack的常用方法

empty()

booean

peek()

查看栈顶元素

Object

pop()

移除栈顶元素

Object

push(Ele)

将Ele元素进栈

search(Object 0 )

返回指定元素Ele在栈中的位置,没有返回-1

int

队列

Deque接口

Deque接口的常用方法

peek()

返回队列中的第一个元素,队列为空则返回null

Object

size()

int

pop()

移除队列中的第一个元素,队列为空则抛出异常

Object

push(Object o)

添加...,队列满时抛出异常

void

ArrayDeque实现类

ArrayDeque的构造方法

ArrayDeque()

ArrayDeque(int size)

指定初始容量

ArrayDeque(COl)

指定初始元素

遍历

特点

对于List而言,可以通过索引来遍历

对Set而言,可以使用迭代器

所有实现Collection接口的类都有一个Iterator的方法来获取迭代器

Iterator

Iterator的常用方法

HashNext()

判断是否还有没有遍历的元素

boolean

next()

获取到集合中下一个将要遍历的元素,如果没有要遍历的元素则,抛出NoSuchElementException异常

Object

remove()

将下一个要遍历的元素从遍历的范围中移除

void

集合的遍历

迭代器遍历:

package test_02;

import java.util.*;

public class set_text {

public static void main(String[] args) {

Integer[] array = {1,3,4,2,4,11,234,23,42,34,23};

List lst = Arrays.asList(array);

TreeSet sortSet = new TreeSet( lst );

Iterator iterator = sortSet.iterator();//获取迭代器

while(iterator.hasNext()) {

System.out.print(iterator.next()+ ",");

}

}

}

for-each遍历:

package test_02;

import java.util.*;

public class set_text {

public static void main(String[] args) {

Integer[] array = {1,3,4,2,4,11,234,23,42,34,23};

List lst = Arrays.asList(array);

TreeSet sortSet = new TreeSet( lst );

Iterator iterator = sortSet.iterator();//获取迭代器

for (Integer valeu : sortSet) {

System.out.print(valeu + ", ");

}

}

}

List的索引遍历

package test_02;

import java.util.*;

public class set_text {

public static void main(String[] args) {

Integer[] array = {1,3,4,2,4,11,234,23,42,34,23};

List lst = Arrays.asList(array);

for(int i=0 ;i

System.out.print( lst.get(i)+ "," );

}

}

}

映射的遍历

1.Map提供的获取键或值的方法

名称

描述

返回值类型

keySet()

返回一个包含map中所有键的对象的集合

Set

values()

返回一个包含map中所有值对象的集合

Collection

集合元素的常用操作

描述

java.util.Collections类是一个工具类,该类的方法都是静态方法。

方便对集合的排序,搜索等操作。

元素的排序

collections提供了两个sort方法用于对元素的排序。

public static void sort(List list)

public static void sort(List list,comparator c)

搜索特定元素

collections提供了两个binarySearch方法用来搜索列表中特定元素

binarySeach方法常用的是二分法搜索,只能对已有序的列表搜索。

public static int binarySearch(List list,Object Ele)

public static int binarySearch(List list,Object Ele,comparator c)

任意打乱元素的顺序

collections提供了suffle方法来打乱列表中元素的顺序。

public static void shuffle(List list)

其他方法(静态)

addAll(col,Object o)

将对象o添加到col( collection )集合中

boolean

copy(List ls1,List ls2)

将列表ls2中的内容复制到ls1中

void

disjoint(col_1,col_2)

比较col_1与col_2是否有相同的元素,没有则返回false

boolean

fill(List ls,Object o)

填充

void

reverse(List ls)

将列表ls反转

void

swap(List ls,int i,int j)

交换ls列表中索引为i和j所对应的值

void

hashCode方法

使用哈希时,本存储的对象需要一个哈希码(hash code 一般是一个整数)。

hashCode方法用于计算提供一个哈希码。

工作原理:

java 静态集合_Java集合_第1张图片

进入哈希存储之前,首先调用hashSet获取一个哈希码,来定位哈希桶

在哈希桶中,不同对象是按照线性表的方式存储的

哈希码决定了分离度,处理好分离度是提高效率的关键因素

eg: 在向HashSet集合添加(调用add方法)元素时,会首先调用hashCode方法来定位哈希桶,如果是空桶就会直接存进去,否者会调用equals方法来查看该桶中是否含有与其相同的对象,没有则存进去,否者存储失败。

所以通常情况下,equals与hashCode要么都重写,要么都不重写。且equals为true的两个对象的hashCode必须相同,hashCode不相同的两个对象的equals必须为false。

java 静态集合_Java集合_第2张图片

你可能感兴趣的:(java,静态集合)