12章总结

本文介绍了Java中的集合类,如List、Set和Map,它们是Java.util包的重要组成部分,讨论了它们的特点、功能和使用场景,以及ArrayList、LinkedList和HashMap/TrieMap等常见实现类的优缺点。
摘要由CSDN通过智能技术生成

集合类
集合可以看作是一个容器,如红色的衣服可以看作是一个集合,所有Java类的书也可以看作一个集合。集合中的各个对象,很容易将其从集合中取出来,也很容易将其存放到集合中,还可以将其按照一定方法的顺序进行摆放。Java中提供了不同的集合类,这些类具有不同的储存对象,同时提供了相应的方法,以方便用户对集合进行遍历、添加、删除和查找指定的对象。

集合类概括
java.util包中提供了一些集合类,这些 集合类又被成为容器,提到容器不难想到数组。集合类于数组的不同之处是:数组的长度是固定的  但集合类不同长度是可变的:数组用来存放基本数据类型的数据,集合用来存放对象的引用。常用的集合又List集合和Map集合  其中List集合与Set集合继承了Collection接口,各个杰克偶还提供了不同的实现类


Collection接口
Collection接口时层次结构中的根接口,构成Collection的单位称为元素  Collection接口同城直接使用,但该解耦提供了添加元素,删除元素,管理数据的方法,由于List接口与 Set接口都继续继承了Collection接口,因此这些方法对List集合与Set集合是通用的。

方法    功能描述
add(E e)    将指定的对象添加到该集合中
remove(Object o )    将指定的对象从该集合中移除
isEmpty()    返回boolean值,用于判断当前集合是否为空
iterator()    返回在此Collection的元素上进行迭代的迭代器。用于遍历集合中的对象
size()    返回int型值,获取该集合中元素的个
12.1例题
package 十二章;
 
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
 
 
public class Muster {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Collection<String> list = new ArrayList<>();//创建集合类对象 泛型为String类型
        list.add("《jvaa从入门到精通》");//添加数据
        list.add("《零基础学java》");
        list.add("《java精彩编程200例》");
        Iterator<String> it=list.iterator();//创建迭代器  循环集合类内的数据
        while(it.hasNext()){//判断是否有下一个值
            String str = (String)it.next();//拿去下一个值使用
            System.out.println(str);//输出
        }
    }
 
}

12.3List集合 
数组和list的区别 一个可以增加 数组不可以增加 因为数组增加的话 会出现下标越界   所以要学习 list

List接口的常用使用实现类有 ArrayList类  数组  LnledList类 列表 

ArrayList类  数组   更适用于查找   实现了可变的数组  允许保存所有元苏  包括null  可以根据索引位置对集合进行快速随机访问  。缺点是向指定的索引位插入对象或者删除对象的熟读较慢

LnledList类 列表    更实用为增删改  采用了链表接口保存对象。 这种结构的有点事便于集合中插入和删除对象。需要向集合中插入,  删除独享时  使用

add()添加   get()获取   删除remove()删除  size()获取元素个数    isEmpty()返回boolean类型  判断当前集合是否为空ArrayList类实现的List集合的效率更高;但对于随机访问集合中的对象 使用ArrayList类实现List集合的效率较低

List<E>list =new  ArrayList<>;
List<E>list2 =new LinkedList<>;
E可以是合法Java数据
 例如  如果集合中的元素为字符串类型,那么E可以改成String类型

12.2例题

12.4 set集合
Set接口常用时实现有HashSet 类与 TreeSet 类,简述如下:
1. HashSet 类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 Set 集合的迭代顺序,特别是它不保证该顺序恒久不变。此类允许使用 null 元素。

2.TreeSet 类不仅实现了 Set 接口,还实现了 java.util.SortedSet 接口,因此 TreeSet 类实现的 Set集合在遍历集合时按照自然顺序递增排序,也可以按照指定比较器递增排序,即可以通过比较器对用 TreeSet 类实现的 Set 集合中的对象进行排序。

方法    功能描述
first()    返回此Set集合中当前第一个(最低)元素
last()    返回此Set集合中当前最后一个(最高)元素
comparator()    返回对此Set集合中的元素进行排序的比较器,如果Set集合使用自然顺序  则返回null
headSet(E toElement)    返回一个新的Set集合  新的集合时toElement对象(不包含)之前的所有对象
subSet(E formElement EfromElement)

返回一个新的Set集合  fromElement对象(包含)fromElement对象(不包含)之间的所有对象
tailSet(E fromElement)    返回一个新的Set集合  新的集合包含FromElement对象(包含)之后的所有对象
12.3例题


12.5 Map集合
 Map集合时没有结成Collecion接口,其提供的时ket到value的映射。Map集合中不能包含相同key,每个key只能映射一个value。key还决定了储存对象在映射中的储存位置,但不是由key对象本身来决定的,而是通过一种“散列技术”进行处理,产生一个散列码的整数值。散列码通常用一个偏移量,该偏移量对应分配给映射内存区域的起始位置,从而确定储存对象在映射中储存位置。Map集合包裹了Map接口以及Map接口的所实现类

12.5.1Map接口
Map 接口提供了讲key映射到值得对象,一个映射不能包含重复得key,每一个key最多只能映射到一个值,除集合得常用方法外 Map接口还提供了 如下的集中使用方法

方法    功能描述
put(K key,V value)    向集合中添加指定的key和value的映射关系
containsKey(Object key)    如果此时映射包含指定key的映射关系,则返回 true
containsValue (Object  value )    
如果此映射一个或者多个映射到指定值,则返回true

get(Object key)    如果存在指定的key对象,则返回该对象对应的值   否则返回null
keySet()    返回该集合中的所有key对象形成的Set集合
values()    返回该集合中所有值对象形成的Collection集合
 12.5.2Map接口的实现类

Map接口常用的实现类有HashMap类和TreeMap类,简述如下

1.HashMap类是基于哈希表的Map接口实现的,此实现提供所有可选的映射操作, 并允许使用null值和null建 但必须保证建的唯一性,HashMap类通过哈希表对其内部的映射关系进行快速查找,此类不保证映射顺序,特别是它不报证该顺序永恒不变

2.TerrMap类不仅实现了Map接口,还实现了java.util.SortedMap接口,因此集合中的映射关系具有一定的顺序,但是添加了 删除和定位映射关系是,TreeMap类比HashMap类性能稍差由于TreeMap类实现了Map结合中的映射关系是根据建对象按照一定的顺序排列的  因此不允许建对象为null

建议 使用HashMap类实现Map结合 因为由HashMap类实现的Map集合添加和删除映射关系效率更高  可以通过HashMap类创建Map集合,当需要顺序输出时,在创建一个完成相同映射关系的TreeMap类实例


12.4例题
代码

package 十二章;
 
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
 
public class HashMapTest {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Map<String,String>map=new HashMap<>();//创建Map集合对象
        map.put("ISBN-978654","Java从入门到精通");//向Map集合中添加元素
        map.put("ISBN-978361","Android从入门到精通");
        map.put("ISBN-978893","21天学Android");
        map.put("ISBN-978756","21天学java");
        Set<String>set=map.keySet();//构建Map集合中所有key的Set集合
        Iterator<String>it=set.iterator();//创建Iterator迭代器
        System.out.println("key值:");
        while(it.hasNext()) {//遍历并输出Map集合中获得key值
            System.out.print(it.next()+" ");
        }
        Collection<String>coll=map.values();//构建Map集合中所有value值的集合
        it=coll.iterator();
        System.out.println("\nvalue值:");
        while(it.hasNext()) {//遍历并输出Map集合中的value值
            System.out.print(it.next()+" ");
        }
    }
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值