Java 集合

本文详细介绍了Java集合框架中的List、Set和Map接口,包括它们的概念、实现类特点以及遍历方法。重点讲述了ArrayList、LinkedList、Vector、HashSet、TreeSet和HashMap、TreeMap等的具体用法和区别。
摘要由CSDN通过智能技术生成

下面来探索集合吧!!!

一.什么是集合

1.1集合概念

集合就是一个容器,一个能够动态增长长度的容器。我们可以把多个各种各样的存储对象放到这个容器中。取数组不同的是,数组只能同时存储一种相同类型的数据,并且数组长度也不是理想的,

,数组长度一旦定义就无法改变。

集合给我们在实际应用当中起了很大作用。Java中对于各种数据结构的实现,就是我们用到的集合。

二.集合API

Java 的集合框架是由很多接口、抽象类、具体类组成的,都位于 java.util 包中。

三.List接口及实现类

List(单列)接口继承了collection接口,有三个实现类

ArrayList:

数组列表,底层是一个数组,数据采用数组方式存储。查询快,增添删除慢。

LinkedList:

链表,底层是一个双向链表,数据采用链表方式存储,查询慢,增添删除快

Vector:

和ArrayList一样,唯一不同的是该实现类都上了锁 synchronized,线程安全

四.List接口集合迭代

方法一:for循环遍历

 public class ListDemo4 {
    public static void main(String[] args) {
        /*List集合遍历方法1for循环*/
        ArrayList<String> arrayList=new ArrayList();//创建一个集合对象
        arrayList.add("a");
        arrayList.add("b");
        arrayList.add("c");
        arrayList.add("d");//添加  
         //遍历arraylist
        for (int i = 0; i < arrayList.size(); i++) {
            System.out.println(arrayList.get(i));
        }
       

    }
}

for循环还可以对元素进行修改

public class ListDemo4 {
    public static void main(String[] args) {
        /*List集合遍历方法1for循环*/
        ArrayList<String> arrayList=new ArrayList();//创建一个集合对象
        arrayList.add("a");
        arrayList.add("b");
        arrayList.add("c");
        arrayList.add("d");//添加  
         //遍历arraylist
        for (int i = 0; i < arrayList.size(); i++) {
            if("a".equals(arrayList.get(i))){
                arrayList.remove("a");//删除元素a
            }
            i--;
        }
       
    }
}

方法二:增强for循环

public class ListDemo4 {
    public static void main(String[] args){
        /*List集合遍历方法1for循环*/
        ArrayList<String> arrayList=new ArrayList();
        arrayList.add("a");
        arrayList.add("b");
        arrayList.add("c");
        arrayList.add("d");
        //List集合遍历方法增强for循环,不能对元素进行修改
        for(String s:arrayList){
            System.out.println(s);
        }

    }
}

与fo循环不同的是,增强for循环不能对元素进行操作了,只是遍历

方法三:使用迭代器遍历

public class ListDemo4 {
    public static void main(String[] args){
       ArrayList<String> arrayList=new ArrayList();
        arrayList.add("a");
        arrayList.add("b");
        arrayList.add("c");
        arrayList.add("d");
//List集合遍历方法3,使用迭代器遍历 iterator
        Iterator<String> iterator=arrayList.iterator();
        while(iterator.hasNext()){
            String s=iterator.next();
            if("a".equals(s)){
                iterator.remove();//对元素进行删除操作
            }

        }
    }
}

此方式也可以对元素进行操作

五.Set接口及实现类 

Set接口继承了Collection接口。 Set中所存储的元素是不重复的,但是是无序的, Set中的元素是没有索引的
Set接口有两个实现类
HashSet: 元素不可重复,存储对象须重写hashcode()和equals()
TreeSet: 元素进行指定方式的排序 存储的对象必须实现Comparable接口,重写comparaTo()。

六.Set接口集合迭代

方式一:增强for循环

public class TestSet {
    public static void main(String[] args) {
        TreeSet<String> treeSet=new TreeSet<>();
        treeSet.add("aaa");
        treeSet.add("uuu");
        treeSet.add("eee");
        treeSet.add("sss");
        treeSet.add("ddd");
        treeSet.add("ccc");//添加元素
// 增强for循环遍历treeSet
        for (String s:treeSet) {
            System.out.println(s);
        }


    }
}

方法二: 迭代器遍历

public class TestSet {
    public static void main(String[] args) {
        TreeSet<String> treeSet=new TreeSet<>();
        treeSet.add("aaa");
        treeSet.add("uuu");
        treeSet.add("eee");
        treeSet.add("sss");
        treeSet.add("ddd");
        treeSet.add("ccc");//添加元素
       //迭代器遍历
      Iterator<String> iterator = treeSet.iterator();
      while (iterator.hasNext()){
          String s=iterator.next();
          System.out.println(s);
      }
    }
}

七.Map(双列)接口及实现类

Map概念: 

将键映射到值的对象, 一个映射不能包含重复的键 ,每个键最多只能映射到一个值

Map实现类 

HashMap: 

HashMap中元素的key值不能重复, 排列顺序是不固定的,可以存储一个
为null的键

TreeMap:

TreeMap中所有的元素都保持着某种固定的顺序,如果需要得到一个有序
的Map就应该使用TreeMap,key值所在类必须实现Comparable接口。

Hashtable:

实现了同步。
不能存储为null的键

八.Map迭代器

方法一:

根据键找值, 获取所有键的集合 ,遍历键的集合,获取到每一个键 ,根据键找值

//方法一:先拿到所有键,遍历键,根据键找值
        Set<String> keySet=hashMap.keySet();
        for (String key:keySet) {
            System.out.println(key+"="+hashMap.get(key));
        }

方法二:

根据键值对对象找键和值 , 获取所有键值对对象的集合 ,遍历键值对对象的集合,获取到每一个键值对对象 ,根据键值对对象找键和值
 //方法二:
        Set<Map.Entry<String,String>> entries =hashMap.entrySet();
        for (Map.Entry entry:entries) {
            System.out.println(entry.getKey()+":"+entry.getValue());
        }

九.Collections类

是一个工具类,Collections是集合类的工具类,与数组的工具类Arrays类似.

addAl l(Collection<? super T> c, T... elements);
binarySearch(List<? extends Comparable<? super T>> l ist, T key)
sort(List<T> l ist)
sort(List<T> l ist, Comparator<? super T> c)
swap(List<?> l ist, int i, int j)
copy(List<? super T> dest, List<? extends T> src) ; 注意 dest size 需大于等于 src.size
fi l l(List<? super T> l ist, T obj)
max(Col lection<? extends T> col l)
min(Col lection<? extends T> col l)
replaceAl l(List<T> l ist, T oldVal, T newVal)
reverse(List<?> l ist)
shuffle(List<?> l ist) 随机排序
copy(dest,src) 集合复制

十.下面这张图片是对集合的一个简单的概括

  • 28
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

再拼一次吧

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

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

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

打赏作者

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

抵扣说明:

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

余额充值