java集合框架

本章内容

java集合框架

collection接口API

iterator迭代器接口

collection子接口之一:Set接口

HashSet linkedHashSet TreeSet

collection子接口之二:List接口

ArrayList LinkedList Vector

Map子接口

HashMap TreeMap Hashtable

存储对象可以考虑:1.数组;2.集合

数组:

数组存储对象的特点:Student[] stu = new Student[20]; stu[0] = new Student();…

数组弊端:1.一旦创建其长度不可变,如果要继续添加需要重新创建一个数组,并将数据拷过去;2.真实的数组存放的对象个数是不可知的;

集合:

Collection接口
在这里插入图片描述

|-------List接口:元素有序、可重复的集合
    |-------ArrayList(主要的实现类,非线程安全的) 
        LinkedList(对于频繁的插入,删除操作,非线程安全的) Vector(古老的实现类,线程安全的)
        
|-------Set接口:元素无序、不可重复的集合
    |-------HashSet(主要实现类)          
        linkedHashSet(以链表形式存在的Set) TreeSet(只能添加同一类型元素的Set)

Map接口:
在这里插入图片描述
|-------HashMap接口:具有映射关系“key-value对”的集合
LinkHashMap TreeMap Hashtable(子类:Properties)

Collection接口

//Collection类中的重要的方法
Collection coll = new ArrayList();

//返回集合中元素的个数
coll.size();

//.add(Object object)向集合中添加一个元素,默认是对象
coll.add(123);

//.addAll(Collection coll)向集合中添加新集合的所有元素
Collection coll1 = new Collection(1,2,3);
coll.addAll(coll1);

//判断集合是否为空
coll.isEmpty();

//清空集合元素
coll.clear();

//判断集合中是否包含指定的obj元素
coll.contains(123);

//判断某个集合中是否包含另一个集合的所有元素
coll.containsAll(coll1);

//集合之间求交集,并返回给当前集合。
coll.retainAll(coll1);

//删除集合中的obj元素,并返回Boolean类型。
coll.remove("88");

//删除当前集合中删除包含在coll1中的元素,求差集
coll.removeAll(coll1);

//判断两个集合中所有元素是否相等
coll.equals(coll2);

//将集合转换成数组
Object obj = coll.toArray();

//素组转化成集合
Collection coll = Arrays.asList(1,2,3);

//集合遍历,返回一个Iterator接口实现类的对象
Iterator iterator = coll.iterator();
while(iterator.hashNext()) {
    System.out.println(iterator.next());
}


集合遍历
用迭代器遍历
Iterator iterator = coll.iterator();
while(iterator.hashNext()) {
    System.out.println(iterator.next());
}

用增强for循环遍历
for(Object i:coll) {
    System.out.println(i);
}

List

//ArrayList接口:List中相对于Collection,新增加的方法

void add (int Index, Object ele):在指定的索引位置index添加元素ele

boolean addAll (int index, Collection eles)

Object get (int index):获取指定索引的元素

Object remove (int index):删除指定索引位置的元素

Object set (int index, Object ele):修改指定位置的元素

int indexOf (Object obj):返回obj在集合中首次出现的位置, 没有就返回-1

int lastIndexOf (Object obj):返回obj在集合中最后出现的位置, 没有就返回-1

List subList(int fromIndex, int toIndex)返回从fromIndex到toIndex结束左闭右开的一个子List

List常用的方法:增(add())、删(remove (int index))、改(set(int index, Object obj))、查(get (int index))、插(add (int Index, Object ele))、长度(size());

set

set:存储的元素是无序的,不可重复的。

无序性不等于随机性

说明:要求添加进set中的元素所在的类,一定要重写equals()和hashCode()方法,进而保证set中元素的不可重复性。
set中的所有方法都是来源于collection接口中的方法

hashSet和linkedHashSet的区别:hashSet存储元素是无序的,而LinkedHashSet存储是、元素是有序的,它使用链表维护了添加进去的顺序,当我们遍历时是按照顺序遍历的。

TreeSet的特点:

向TreeSet中添加的元素必须是同一个类的;
可以按照添加进集合中的元素的指定顺序遍历。向String,包装类等默认按照从小到大的顺序遍历。
当向TreeSet中添加自定义类的对象时,有两种排序方法:①自然排序②定制排序
自然排序,要求自定义类实现java.lang.Comparable接口并重写其compareTo (Object obj)的抽象方法。在此方法中,按照自定义类的哪个属性进行排序;compareTo()与hashCode()以及equals()三者保持一致
定制排序,创建一个实现了Comparator接口的类对象,向TreeSet中添加Customer类的对象,在此compare()方法中,指明是按照Customer的哪个属性排序的。

Map接口:

Map与Collection并列存在。用于保存具有映射关系的Key-Value对。

Map中的Key和Value都可以是任何引用类型的数据

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

常用String类作为Map的“键”。

key和value之间存在单向一对一关系,即通过指定的key总能找到唯一的、确定的value。

HashSet是HashMap的一个特殊的实现。

如下图所属,在Map中Key是一个set,所以key不能重复,而values是一个Collection,值是可以重复的。而一个键值对是一个基本单元,被称为Entry,而Entry与Entry之间又是一个Set,所以它们之间是不能重复的。
在这里插入图片描述
Map中常用的方法:

Map map = new HashMap();
//往Map中添加元素
map.put("AA", 213);
map.put(null,null);
//返回Map的长度
map.size();
//删除Map中的元素
map.remove("AA");
//将新Map中的所有元素添加进来
map.putAll(newMap);
//清空Map中的所有元素
map.clear();
//获取指定key的value值
map.get("AA");
//遍历key集
Set set = map.keySet();
for(Object obj : set){
    System.out.println(obj);
}
//遍历value集
Collection values = map.values();
Iterator i = values.iterator();
while(i.hashNext()){
    System.out.println(i.next());
}
//遍历key-value对
Set set1 = map.keySet();
for(Object obj:set1){
    System.out.println(obj + "---- + map.get(obj));
}

HashMap 和 LinkedHashMap的区别等同于hashSet与linkedHashset的区别

Hashtable是一个古老的Map实现类,线程安全。

HashMap与Hashtable的区别:Hashtable线程安全。;Hashtable不允许使用null作为Key和value。

Hashtable的一个子类Properties

常用来处理属性文件,键和值都为String类型

Collections工具类
操作Collection以及Map的工具类,Collections

面试题:区分Collection与Collections

Collection是一个接口,与存储数据相关,其下有List和Set两个子接口,可以存储不同数据特点的元素。

Collections是操作这些集合的工具类,不仅可以操作collection还可以操作Map

collections常用方法

List list = new ArrayList();
list.add(123);
list.add(234);

//反转List中元素的顺序
Collections.revers(list);

//对List集合元素进行顺序随机排序
Collections.shuffle(list);

//根据元素的自然顺序对指定List集合元素按升序排序。
Collection.sort(list);

//将指定List集合中的i处元素和j处元素进行交换。
Collections.swap(list, 0, 2);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigCabbageFy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值