2021-05-14


关系与区别

ArrayList和HashSet

    ArrayList有顺序,HashSet没有顺序
    ArrayList元素可以重复,HashSet元素不能重复

ArrayList和LinkList

    ArrayList是顺序结构,插入、删除数据慢,定位快
    LinkList是链式结构,插入、删除数据块,但定位慢

HashMap和HashTable

    联系:HashMap和HashTable均实现了Map接口,以键值对方式存储数据
    区别
        HashMap可以存放null,HashTable不可以存放null
        HashMap不是线程安全的类,HashTable是线程安全的类

几种Set

| 所有的Set中存储的元素均不可重复
    HashSet
        无序

    LinkHashSet
        按照插入顺序

    TreeSet
        从小到大排序

实例

package List;

import java.util.*;

/**
 * 关系和区别
 * ArrayList和HashSet的区别
 * ArrayList和LinkedList的区别
 *
 * @author Aike
 * @create 2021-05-14 9:25
 */
public class differences {
    public static void main(String[] args) {
        ArrayList<Integer> numberList = new ArrayList<>();
//        List中的数据按插入顺序存放
        System.out.println("-------------------------------------");
        System.out.println("List");
        System.out.println("插入9 5 2 1");
        numberList.add(9);
        numberList.add(5);
        numberList.add(2);
        numberList.add(1);
        System.out.println(numberList);
        System.out.println("插入两个9");
        numberList.add(9);
        numberList.add(9);
        System.out.println(numberList);


        HashSet<Integer> numberSet = new HashSet<>();
//        Set中的数据无顺序存放
        System.out.println("-------------------------------------");
        System.out.println("Set");
        System.out.println("插入9 5 2 1");
        numberSet.add(9);
        numberSet.add(5);
        numberSet.add(2);
        numberSet.add(1);
        System.out.println(numberSet);
        System.out.println("插入两个9");
        numberSet.add(9);
        numberSet.add(9);
        System.out.println(numberSet);


//        练习-不重复的随机数
//        生成50个 0-9999之间的随机数,要求不能有重复的
        System.out.println("--------------------------------");
        System.out.println("练习-不重复的随机数");
        HashSet<Integer> numbers = new HashSet<>();
        Random r = new Random();
        while (numbers.size() != 50) {
            numbers.add(r.nextInt(9999));
        }
        System.out.println("size=" + numbers.size());
        System.out.println(numbers);


//        ArrayList和LinkedList的区别
        System.out.println("------------------------");
        System.out.println("ArrayList和LinkedList的区别   ");
//        ArrayList为顺序结构,定位块,插入删除数据慢
//        LinkList为链式结构,定位慢,插入删除数据快


//        HashMap和Hashtable的区别
        System.out.println("------------------------");
        System.out.println("HashMap和Hashtable的区别");
        HashMap<String, String> hashMap = new HashMap<>();
        Hashtable<String, String> hashtable = new Hashtable<>();

//        可以使用null作key,value
        hashMap.put(null, "123");
        hashMap.put("123", null);
        System.out.println(hashMap);

//        不可以使用null作key,value
//        hashtable.put(null,"123");
//        hashtable.put("123",null);
//        System.out.println(hashtable);

//        练习-反转key和value
//        使用如下键值对,初始化一个HashMap:
//        adc - 物理英雄
//        apc - 魔法英雄
//        t - 坦克
//        对这个HashMap进行反转,key变成value,value变成key
//        提示: keySet()可以获取所有的key, values()可以获取所有的value
        HashMap<String, String> hero = new HashMap<>();
        hero.put("adc", "物理英雄");
        hero.put("apc", "魔法英雄");
        hero.put("t", "坦克");
        System.out.println(hero);

        HashMap<String, String> temp = new HashMap<>();
        Set<String> keys = hero.keySet();
        for (String key : keys) {
            String value = hero.get(key);
            temp.put(value, key);
        }
        hero.clear();
        hero.putAll(temp);
        System.out.println(hero);
    }
}

-------------------------------------
List
插入9 5 2 1
[9, 5, 2, 1]
插入两个9
[9, 5, 2, 1, 9, 9]
-------------------------------------
Set
插入9 5 2 1
[1, 2, 5, 9]
插入两个9
[1, 2, 5, 9]
--------------------------------
练习-不重复的随机数
size=50
[770, 7811, 1925, 3718, 6665, 3337, 526, 2066, 5524, 3351, 3735, 8088, 1560, 4892, 1312, 9379, 8357, 1445, 2341, 167, 2345, 9643, 7214, 6323, 1333, 4536, 2746, 1085, 5566, 3263, 5441, 8772, 197, 334, 3790, 2894, 2518, 8025, 3296, 1121, 5475, 8549, 6122, 2541, 9330, 115, 6388, 7287, 3320, 2684]
------------------------
ArrayList和LinkedList的区别   
------------------------
HashMap和Hashtable的区别
{null=123, 123=null}
{adc=物理英雄, t=坦克, apc=魔法英雄}
{魔法英雄=apc, 物理英雄=adc, 坦克=t}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值