Java集合

Java集合分为Collection和Map

Collection是高度抽象的接口

Collection提供的方法:

size()  计算大小

add() 向集合中添加元素

addAll()向集合中添加一组集合

remove()从集合中删除某一个元素

removeAll()从集合中删除一组元素(去掉交集部分)

clear()清空集合中的所有元素

isEmpty()判断集合中是否有元素

retainAll()求两个集合的交集

contains()集合中是否包含某个元素

containsAll()集合中是否包含一组元素

equals()判断集合是否和某个对象相等

hashcode()求该集合的hash值

toArray()将集合转为数组

toArray<T[] a>()带泛型的数组转换

iterator()返回集合的迭代器

1、List:有序,可重复

每个元素有有其对应的顺序索引

  • ArrayList
  • LinkedList:插入和删除速度快
  • Vector:古老的集合类,线程安全

Arrays.asList()返回的的List集合既不是ArrayList实例,也不是Vector实例,返回值是一个固定长度的List的集合

  • List集合提供了根据索引来操作集合元素的方法:

void add(int index,Object ele)

boolean addAll(int index,Collection eles) 

int indexOf(Object ele)

int lastIndexOf(Object ele)

Object get(int index)

Object remove(int index)

Object set(int index,Object ele)

List subList(int fromIndex,int toIndex) 左闭右开

  • LinkedList新增的方法:

void addFirst(Object ele)

void addLast(Object ele)

Object getFirst()

Object getLast()

Object removeFirst()

Object removeLast()

2、Set接口:无序,不可重复

  • HashSet:根据计算的hash值决定元素的存放位置,有很好的存取和查找性能

加入的对象需实现hashCode()和equals()方法,且这两个方法需保持一致

  • LinkedHashSet:是HashSet的子类,使用链表来维护set的次序,这使得元素看起来是顺序保存

LinkedHashSet的插入性能略低于HashSet,但在迭代访问Set里的全部元素时有很好的性能

  • TreeSet:是SortedSet接口的实现类,可以确保集合处于排序状态

如果将一个对象加入TreeSet集合中,则必须实现Comparable接口

只能添加同一类型的对象

添加元素时,首先按照compareTo方法比较,一旦返回0,则程序认为这两个对象是一样的

所以,需确保compareTo,hashCode,equals方法三者保持一致

  • 自然排序  调用集合的compareTo方法
  • 定制排序 实现Coparator接口,重写compare方法

 Map与Collection并列存在,用来存放具有映射关系的数据

key和value可以是任意类型的数据

Map中的key用set来存放,不允许重复,即同一个Map对象所对应的类,需重写hashCode和equals方法

HashMap提供的方法:

添加删除操作:

Object put(Object key,Object value)

Object remove(Object key)

void putAll(Map t)

void clear()

元素的查询操作:

Object get(Object key)

boolean containsKey(Object key)

boolean containsValue(Object value)

int size()

boolean isEmpty()

boolean equals(Object obj)

元视图的操作方法:

Set keySet()

Collection values()

Set entrySet()

LinkedHashMap:使用链表维护添加进的元素,遍历后的顺序和插入顺序一致

TreeMap:按照添加进Map中的元素的key的指定属性进行排序,key必须是同一类型的对象

Hashtable:古老的Map实现类,线程安全的,不允许使用null作为key和value

Properties:Hashtable的子类,通常用来处理属性文件

存取时建议使用setProperty(String key,String value)和getProperty(String key)

Collections 操作集合的工具类

排序操作(都是静态方法):

reverse(List)

shuffle(List)

sort(List)

sort(List,Comparator)

swap(List,int i,int j)

查找、替换:

Object max(Collection)

Object max(Collection,Comparator)

Object min(Collection)

Object min(Collection,Comparator)

int frequency(Collection,Object)

void copy(List dest,List src)

boolean repalaceAll(List,Objcet oldVal,Object newVal)

原文地址:https://www.cnblogs.com/keleaiww/p/11064541.html