Java 集合类知识点总结

一、容器集合

1、对象容器集合

(1)数据结构:数据结构是以某种形式将数据组织在一起的合集(colection),数据结构不仅支持存储数据,还支持访问和处理数据。

(2)一种数据结构被认为是一个容器(container)。容器是一个能存储其他对象的对象,其他对象又被称为元素。常见的数据结构:数组(Array)、集(Set)、队列(Queue)、链表(Linkedlist)、树(Tree)、堆(Heap)、栈(Stack)和映射(Map)等结构。

(3)分类:根据数据存储数据格式的不同,可以将集合分为两类。

  • 一种是为了存储一个元素合集,简称合集(colection)。
  • 另一种为了存储键/值对,称为映射表(map)。

1)合集(colection)子接口主要有Set、Queue和List等接口,每一种集合接口描述了一种数据结构。

2)colection接口是处理对象合集的根接口,colection接口提供了在集合中添加、查询、删除元素的基本操作。

二、合集

1、List

(1)List集合:其中的元素是有序的,可以重复出现。

(2)List接口的实现类:ArrayList和LinkedList。ArrayList是基于动态数据结构实现,LinkedList基于链表数据结构实现的。LinkedList所占内存空间比ArrayList大,批量插入或删除数据是优于ArrayList,ArrayList访问元素速度快。

1)ArrayList:用数组存储元素,数组是动态创建的。

2)LinkedList:用链表存储元素。

(3)常用方法:List接口继承自Collection接口,List常用的方法如下:

 (4)List的应用举例

1)创建集合,并向集合中添加元素

import java.util.ArrayList;
import java.util.List;
public class Helloworld {
    public static void main(String[] args) {
        List list=new ArrayList();//创建集合
		list.add("A");//向集合中添加元素
		list.add("B");
		list.add("C");
		list.add("D");
		list.add("E");
		System.out.println(list);
    }
}

 声明List类型集合变量list,使用ArrayList类实例化list,List接口不能实例化。

 2)统计集合长度

System.out.println("集合长度= "+list.size());

3)删除其中某个元素

删除指定元素

list.remove("B");
System.out.println("删除B元素后= "+list);

 删除某个索引所在的元素

list.remove(1);
System.out.println("删除第1个元素后= "+list);

 

 4)替换某个元素

list.set(1, "F");
System.out.println("替换元素后= "+list);

5)清空集合

list.clear();
System.out.println("清空集合后= "+list);

 6)遍历集合

a.通过for循环遍历

for(int i=0;i<list.size();i++)
{
	System.out.printf("读取集合元素(%d):%s \n",i,list.get(i));
}

b.使用for-each循环遍历

 for(Object item :list)
   {
       String s=(String)item;
       System.out.println("读取集合元素:" +s);
   }

 c.使用迭代器遍历

迭代器:每种合集都是可以迭代的,可以获得集合的Iterator对象来遍历合集中的所有元素。Collection接口继承自Iterable接口,Iterable接口定义了iterator方法,该方法会放回一个迭代器。

import java.util.Iterator;
Iterator it=list.iterator();//iterator()方法,返回一个Iterator的实例
while(it.hasNext())//hasNext()方法来检测迭代器中是否有更多的元素
  {
     Object item=it.next();//next()方法提供了对合集中元素的顺序访问
     String s=(String)item;
     System.out.println("读取集合元素:" +s);
  }

 2、Queue

(1)队列是一种先进先出的数据结构,元素被追加到队列末尾,然后从队头删除。

(2)Queue接口继承自Collection接口。

 LinkedList类实现了Deque接口,Deque接口又继承自Queue接口,因此可以使用LinkedList创建一个队列。Deque(双端队列),可以实现从队列的两端插入和删除元素。

(3)应用举例

3、集合(set)

(1)集合(set)是一个用于存储和处理无重复元素的高效数据结构。 特点:由一串无序的、不能重复的相同类型元素构成的集合。Set接口扩展自Collection接口。

(2)Set接口直接实现类有三种:散列类HashSet、链式散列类LinkedHashSet和树形集TreeSet。Set接口直接实现的类主要是HashSet,它是基于散列表数据结构的实现。Set接口也继承自Collection接口,继承的方法如下:

 (3)应用举例:

1)创建Set集合,并添加元素

Set set=new HashSet();
set.add("A");		
set.add("B");		
set.add("C");	
set.add("D");	
set.add("E");
set.add("F");
System.out.println(set);

 2)循环遍历元素

a.使用for-each循环遍历

for(Object item :set)
{
	String s=(String)item;
	System.out.println("读取集合元素: "+s);
}

 b.使用迭代器遍历

Iterator it=set.iterator();
while(it.hasNext()) {
   Object item=it.next();
   String s=(String)item;
   System.out.println("读取集合元素 "+s);
}

 

三、映射表(map)

1、map:类似于目录,提供了使用键值快速查询和获取值的功能。map是一种依照键/值对存储元素的容器。、

键,很像是下标,键可以是任意类型的对象,但不能有重复的键。每个键对应一个值。

 2、Map接口直接实现类有三种:散列映射表HashMap、链式散列映射表LinkedHashMap和树形映射表TreeMap。主要是HashMap,HashMap是基于散列表数据结构的实现。map接口提供的主要方法有:

 

 3、应用举例

(1)创建集合,并添加元素

格式:v put(k key,v value)  //让值与键相关联,相当于添加键值对

注意map集合中添加元素是,键值key是不允许重复的,而值value是允许重复的。

 Map map =new HashMap();
 map.put("1", "A");
 map.put("2", "B");
 map.put("3", "C");
 map.put("4", "D");
 map.put("1", "E");
System.out.println(map);

 

注意map键值不允许重复。

(2)向map集合添加指定集合的所有元素

 Map map1 =new HashMap();
 map1.put("1", "A");
 map1.put("2", "B");
 map1.put("3", "C");
 map1.put("4", "D");
 map1.put("1", "E");
 System.out.println("集合1的元素为 "+map1);
 Map map2 =new HashMap();
 map2.put("5", "F");
 map2.put("6", "G");
 map1.putAll(map2);
 System.out.println("集合2的元素为 "+map2);
 System.out.println("集合1的元素为 "+map1);

 (3)清空集合所有键值

 map1.clear();
 System.out.println("清空后集合1的元素为 "+map1);

 

(4)遍历集合

Map有两个集合,可以遍历值的集合,也可以遍历键的集合,也可以同时遍历。

a.使用for-each 循环遍历

 Map map1 =new HashMap();
 map1.put(1, "A");
 map1.put(2, "B");
 map1.put(3, "C");
 map1.put(4, "D");
 map1.put(5, "E");
 System.out.println("集合1的元素为 "+map1);
 Set keys =map1.keySet();
 for(Object key :keys)
   {
      int ikey =(Integer) key;//自动拆箱
      String value=(String)map1.get(ikey);//自动装箱
      System.out.printf("Key=%d  Value=%s \n",ikey,value);
    }

 b.使用迭代器遍历

 Collection values=map1.values();//获得值集合
        //遍历值集合
        Iterator it=values.iterator();
        while(it.hasNext()) {
        	Object item =it.next();
        	String s=(String)item;
        	System.out.println("值集合元素: " +s);
        }

发布了141 篇原创文章 · 获赞 194 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/kenjianqi1647/article/details/104685632