Set,Map,List集合的区别总结

2 篇文章 0 订阅
2 篇文章 0 订阅

set,map,list 都是用于储存数据的集合那么他们之间有什么区别特点呢?先看下图:
在这里插入图片描述

Set集合

1.特点
	无序不可重复的集合
2.常用排序方法
	treeSet:在集中以升序对对象排序的集的实现,这意味着从一个TreeSet对象获得第一个迭代器将按照升序来提供对象,TreeSet类使用了一个TreeMap
下面来看一个例子,
package cn.cx.entity;

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class StuTest {
    public static void main(String[] args) {
        Set<String> set = new HashSet<String>();
        set.add("xet");
        set.add("jpo");
        set.add("wo");
        set.add("jpo");
        System.out.println(set);
        Set<String> softset = new TreeSet<String>(set);
        System.out.println(softset);

    }
}

运行结果可以看到上面的运行结果是无序,不重复的;下面的运行结果是按照字母排行顺序排列的也灭有重复。也就是说TreeSet可以把set集合中的数据按照一定的顺序排列。
在这里插入图片描述
4.便利方法
迭代器便利

package cn.cx.entity;

import java.util.*;

public class StuTest {


    @org.junit.Test
    public void testdemo2(){
        Set<String> set=new HashSet<>();
        set.add("aa");
        set.add("bb");
        set.add("bb");
        set.add("dd");
       
        //迭代器
        Iterator<String> iterator = set.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

    }
    
	增强for循环
package cn.cx.entity;

import java.util.*;

public class StuTest {


    @org.junit.Test
    public void testdemo2(){
        Set<String> set=new HashSet<>();
        set.add("aa");
        set.add("bb");
        set.add("bb");
        set.add("dd");
        //for循环便利
        for (String str:set) {
            System.out.println(str);
        }
        System.out.println("..........................");
  }
    

List集合

1.特点
	有序可重复的存储数据的集合
2.常用List
	List集合一般有ArrayList,LinkedList两种。 ArrayList底部由数组构成,不难看出查询速度比较快,插入数据的速度相对较慢;LinkedList底部由循环双向链组成,查询速度较慢,但插入数据速度快。
3.List常用算法举例
package cn.cx.entity;

import java.util.*;

public class StuTest {
   @org.junit.Test
    public void testdemo(){
       List p1 = new LinkedList();
       for(int i = 0; i<=9;i++){         
           p1.add("a"+i);  
       }
       //打印p1[a0, a1, a2, a3, a4, a5, a6, a7, a8, a9]
       System.out.println(p1);
       // 随机排列
        Collections.shuffle(p1);
        System.out.println(p1);
       // 逆序
        Collections.reverse(p1);
        System.out.println(p1);
       // 排序
        Collections.sort(p1);
        System.out.println(p1);
       // 折半查找
        System.out.println(Collections.binarySearch(p1, "a5"));

   }
}

运行结果
在这里插入图片描述
4.List便利方法
在删除List集合中的数据时因该使用迭代器的遍历方法删除,其余两种方法会报异常.

package cn.cx.entity;

import java.util.*;

public class StuTest {


    @org.junit.Test
    public void testdemo3(){
        List<String> list=new ArrayList<>();
        list.add("aa");
        list.add("bb");
        list.add("bb");
        list.add("cc");
        //for循环遍历
        for (int i = 0; i <list.size() ; i++) {
            System.out.println(list.get(i));
        }
        //增强for循环便利
        System.out.println("------------");
        for (String str:list) {
            System.out.println(str);
        }
        System.out.println("------------");
        //迭代器
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            String next = iterator.next();
            if (next.equals("bb")){
                iterator.remove();
            }

        }


    }
    }

运行结果
在这里插入图片描述

Map集合

1.特点
	存储方式以键值对的方式储存,键不可以重复,值可以重复
2.常用Map子类
	HashMap和Hashtable
	HashMap: 实现一个映象,允许存储空对象,而且允许键是空(由于键必须是唯一的,当然只能有一个)。
3.常用方法
	entrySet();是便利map集合时常用的方法。
4.便利方式
@org.junit.Test
public void testdemo3(){
    Map<String,String> map = new HashMap<>();
    map.put("aa","123");
    map.put("bb","456");
    map.put("cc","789");
    map.put("aa","000");

/*Set<String> strings = map.keySet();
for(String str:strings){
    //System.out.println(str);
    System.out.println("key="+str+"--->"+"value="+map.get(str));
}*/


   //使用entryset
Set<Map.Entry<String, String>> entries = map.entrySet();
Iterator<Map.Entry<String, String>> iterator = entries.iterator();
while (iterator.hasNext()){
    System.out.println(iterator.next());
}


}

在使用迭代器便利时,得到的数据只能是
在这里插入图片描述

总结

1.list 是一个有序可重复的储存数组的集合。
2.set是一个无序不可重复的储存数组的集合。
3.map是一个以键值对的方式储存的方式,键不可以重复,值可以重复 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值