java集合类

文章目录

  1. 集合类概述
  2. List集合
  3. Set集合
  4. Map集合


前言

主要理解集合类的概念,和掌握其使用方法


1.集合类的概述

java.util 包中提供了一些集合类,这些集合类也叫容器。集合类类似于数组,只不过是存放对象的引用的,而且长度可变。

下图是集合类的继承关系:

 

可以看到图中有个Collection接口,他是层次结构中的根接口,通常不能直接使用,Set和List继承他的方法可以使用他的方法。

Collection的常用方法
方法功能描述
add(E e)将对象添加到集合中
remove(Object o)将对象从集合中移除
isEmpty()判断集合是否为空
iterator()迭代器,用于遍历集合中的对象
size()还回集合中对象的个数int类型

例子:

package com.cn;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Dom {


    public static void main(String[]args){
        Collection<String> collection=new ArrayList<>();//实例化集合类对象
        //添加数据
        collection.add("a");
        collection.add("a");
        collection.add("a");
        //创建迭代器
        Iterator<String> iterator=collection.iterator();
        //hasNext()是判断下一个是否为空,next()是还回下一个元素,类型为Object
        while(iterator.hasNext()){
            String str=(String) iterator.next();
            System.out.println(str);

        }

    }
}

结果是:

a
a
a

2.List集合

注意:

  1. List接口继承了Collection接口,说以有Collection的所有方法,他还有两个重要方法为get,和set
  2. get(int index)就是后去index索引的元素
  3. set(int index,Object obj)就是index索引的元素用obj元素替代,index和obj都是变量。
  4. 上图中可以看到List接口下有两个常用的类分别是ArrayList和LinkedList
  5. 区别是ArrayList是采用可变数组方式,LinkedList是采用链表结构,前者方便查询,后者方便修改。

例子:

package com.cn;
import java.util.ArrayList;
import java.util.List;

public class Dom {


    public static void main(String[]args){
        List<String>list =new ArrayList<>();//创建集合类对象
        //添加数据
        list.add("a");
        list.add("b");
        list.add("c");

        String str=(String) list.get(1);
        list.set(1,"t");
        String str1=(String) list.get(1);
        System.out.println(str);
        System.out.println(str1);

    }
}

结果:

b
t

当然LinkedList与其相似。

3.Set集合

注意:

  1. Set集合中对象是无序的
  2. Set集合中不能出现重复对象
  3. Set集合也继承Collection接口,也用于他的方法
  4. Set接口实现类通常是HashSet和TreeSet

TreeSet还实现了java.util.SortedSet接口,所以下面是TreeSet的增加的方法:

TreeSet类的增加方法
方法功能
first()还回集合汇总第一个元素
last()还回集合中最后一个元素
comparator()还回对集合元素进行比较的比较器
headSet(E toElement)还回一个新的集合,集合里的对象是toElement(不包括)之前的所有对象
subSet(E fromElement,E fromElement)还回一个新的集合,集合里的对象是fromElement(不包括)和fromElement(包括)之间的所有对象
tailSet(E fromElement)还回一个新的集合,集合里的对象是fromElement(包括)之后的所有对象

例子:

package com.cn;

import java.util.Iterator;
import java.util.TreeSet;

/*使用treeSet进行排序的时候,需要注意的地方:
1、在使用treeSet进行排序的时候,如果数据不能排序会报cannot be cast to java.lang.Comparable
2、对于不能排序的数据,有两种方法可以实现排序:
3、对于排序的实体类实现java.lang.comparable接口重写compareTo方法
*/


public class Dom implements Comparable<Object>{
    String name;
    int id;

    //重写方法
    @Override
    public int compareTo(Object o) {
        Dom doma=(Dom) o;
        int result=id>doma.id?1:(id==doma.id?0:-1);
        return result;
    }

    public Dom(String name,int id){
        this.id=id;
        this.name=name;
    }

    public String getName(){
        return this.name;
    }

    public int getId(){
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public static void main(String[]args){
        //实例化对象
       Dom dom0=new Dom("小明",2200316);
       Dom dom1=new Dom("小红",2200326);
       Dom dom2=new Dom("小网",2200336);
       Dom dom3=new Dom("小干",2200346);
        //创建集合类并添加对象
        TreeSet<Dom> treeSet=new TreeSet<>();
        treeSet.add(dom0);
        treeSet.add(dom1);
        treeSet.add(dom2);
        treeSet.add(dom3);
        //c创建迭代器
        Iterator iterator=treeSet.iterator();
        while (iterator.hasNext()){
            Dom dom=(Dom) iterator.next();
            System.out.println(dom.getName()+" "+dom.getId());

        }

        System.out.println("截取的部分");
        //截取dom2之前的所有对象不包括dom2,其他的方法类似
        iterator=treeSet.headSet(dom2).iterator();
        while (iterator.hasNext()){
            Dom dom=(Dom) iterator.next();
            System.out.println(dom.getName()+" "+dom.getId());

        }

    }


}

结果:

小明 2200316
小红 2200326
小网 2200336
小干 2200346
截取的部分
小明 2200316
小红 2200326
 

3.Map集合

注意:

  1. Map没有继承Collection接口
  2. Map提供key到value的映射
  3. Map不能包含相同的key,且一个key只能映射一个value

Map接口中的常用方法
方法功能
put(K key,V value)向集合中添加key和value的映射关系
containsKey(Object key)如果此映射中有key的映射关系了,这还回true
containValue(Object value)如果此映射将一个或者多个key映射到指定值,则还回true
get(Object key)如果存在key对象这还回对象对应的值,否则还回null
keySet()还回集合中的所有key对象,形成Set集合
values()还回集合中的所有value对象,形成Collection集合

例子:

package com.cn;


import java.util.*;

public class Dom{

    public static void main(String[]args){
        //创建Map实例
        Map<String,String> map=new HashMap<>();
        map.put("0022","小明");
        map.put("0023","小红");
        map.put("0024","小工");

        //创建Set集合和Collection集合
        Set<String> set=map.keySet();
        Collection<String> collection=map.values();
        //创建迭代器
        Iterator<String> iterator1=set.iterator();
        Iterator<String> iterator2=collection.iterator();
        //遍历
        System.out.println("key集合中的元素:");
        while (iterator1.hasNext()){
            System.out.println(iterator1.next());
        }
        System.out.println("value集合中元素:");
        while (iterator2.hasNext()){
            System.out.println(iterator2.next());
        }


    }

}

结果:

key集合中的元素:
0024
0022
0023
value集合中元素:
小工
小明
小红
 


总结

集合类就是通过不同的方式存储对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值