关系与区别
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}