集合2

  • Set集合特点和HashSet集合类

  • Map集合

  • HashMap集合的相关案例

Set集合特点和HashSet集合类

Set集合的特点

Set:元素唯一,存储元素无序

一个不包含重复元素的 collection

HashSet:

它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变

案例代码一:

import java.util.HashSet;

import java.util.Set;

/\*

\* Set:

\* 一个不包含重复元素的 collection

\*

\* HashSet:

\* 它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变

\*/

public class SetDemo {

public static void main(String\[\] args) {

//创建集合对象

Set\<String\> set = new HashSet\<String\>();

//添加元素

set.add(\"hello\");

set.add(\"world\");

set.add(\"java\");

//唯一

set.add(\"world\");

//遍历集合

for(String s : set) {

System.out.println(s);

}

}

}

HashSet集合类

HashSet:

它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变

HashSet保证元素唯一性的原理

HashSet保证元素唯一性的原理?

通过查看add方法的源码,我们知道了添加功能的执行过程中,是进行了数据的判断的。

这个判断的流程是:

首先比较对象的哈希值是否相同,这个哈希值是根据对象的hashCode()计算出来的。

如果哈希值不同,就直接添加到集合中

如果哈希值相同,继续执行equals()进行比较,

返回的是true,说明元素重复,不添加。

返回的是false,说明元素不重复,就添加。

如果我们使用HashSet集合存储对象,你要想保证元素的唯一性,就必须重写hashCode()和equals()方法。

案例代码二:
**import** java.util.HashSet;

/\*

\* HashSet保证元素唯一性的原理?

\*

\* 通过查看add方法的源码,我们知道了添加功能的执行过程中,是进行了数据的判断的。

\* 这个判断的流程是:

\* 首先比较对象的哈希值是否相同,这个哈希值是根据对象的hashCode()计算出来的。

\* 如果哈希值不同,就直接添加到集合中

\* 如果哈希值相同,继续执行equals()进行比较,

\* 返回的是true,说明元素重复,不添加。

\* 返回的是false,说明元素不重复,就添加。

\*

\* 如果我们使用HashSet集合存储对象,你要想保证元素的唯一性,就必须重写hashCode()equals()方法。

\*/

**public** **class** HashSetDemo {

**public** **static** **void** main(String\[\] args) {

//创建集合对象

HashSet\<String\> hs = **new** HashSet\<String\>();

//添加元素

hs.add(\"hello\");

hs.add(\"world\");

hs.add(\"java\");

hs.add(\"world\");

//遍历集合

**for**(String s : hs) {

System.***out***.println(s);

}

}

}

HashSet集合的练习存储自定义对象并遍历

HashSet集合存储自定义对象并遍历

提示:自定义一个学生类,给出成员变量name和age。遍历集合的时候,在控制台输出学生对象的成员变量值。

两种方式遍历

迭代器

增强for

案例代码三:
**public** **class** Student {

**private** String name;

**private** **int** age;

**public** Student() {

}

**public** Student(String name, **int** age) {

**this**.name = name;

**this**.age = age;

}

**public** String getName() {

**return** name;

}

**public** **void** setName(String name) {

**this**.name = name;

}

**public** **int** getAge() {

**return** age;

}

**public** **void** setAge(**int** age) {

**this**.age = age;

}

}
案例代码四:
import java.util.HashSet;

import java.util.Iterator;

/\*

\* HashSet集合存储自定义对象并遍历

\* 提示:自定义一个学生类,给出成员变量name和age。遍历集合的时候,在控制台输出学生对象的成员变量值。

\* 两种方式遍历

\* 迭代器

\* 增强for

\*/

public class HashSetTest {

public static void main(String[] args) {

//创建集合对象

HashSet<Student> hs = new HashSet<Student>();

//创建元素对象

Student s1 = new Student("林青霞\",30);

Student s2 = new Student("张曼玉\",35);

Student s3 = new Student("王祖贤\",33);

//把元素添加到集合

hs.add(s1);

hs.add(s2);

hs.add(s3);

//遍历

//迭代器

Iterator\<Student\> it = hs.iterator();

while(it.hasNext()){

Student s = it.next();

System.out.println(s.getName()+\"\-\--\"+s.getAge());

}

System.out.println("\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\");

//增强for

for(Student s : hs) {

System.out.println(s.getName()+"\-\--\"+s.getAge());

}

}

}

HashSet集合的练习存储自定义对象保证元素唯一性

HashSet集合存储自定义对象并遍历

要求:如果对象的成员变量值相同,就认为是同一个元素。

提示:自定义一个学生类,给出成员变量name和age。遍历集合的时候,在控制台输出学生对象的成员变量值。

两种方式遍历

迭代器

增强for

因为我们存储的元素所属的类没有重写hashCode()和equals()方法,所以保证不了元素的唯一性。

而我想保证,怎么办呢?重写这两个方法就可以了。

如何重写呢?自动生成就可以了。

案例代码五:
**public** **class** Student {

**private** String name;

**private** **int** age;

**public** Student() {

}

**public** Student(String name, **int** age) {

**this**.name = name;

**this**.age = age;

}

**public** String getName() {

**return** name;

}

**public** **void** setName(String name) {

**this**.name = name;

}

**public** **int** getAge() {

**return** age;

}

**public** **void** setAge(**int** age) {

**this**.age = age;

}

\@Override

**public** **int** hashCode() {

**final** **int** prime = 31;

**int** result = 1;

result = prime \* result + age;

result = prime \* result + ((name == **null**) ? 0 : name.hashCode());

**return** result;

}

\@Override

**public** **boolean** equals(Object obj) {

**if** (**this** == obj)

**return** **true**;

**if** (obj == **null**)

**return** **false**;

**if** (getClass() != obj.getClass())

**return** **false**;

Student other = (Student) obj;

**if** (age != other.age)

**return** **false**;

**if** (name == **null**) {

**if** (other.name != **null**)

**return** **false**;

} **else** **if** (!name.equals(other.name))

**return** **false**;

**return** **true**;

}

}
案例代码六:
**import** java.util.HashSet;

/\*

\* HashSet集合存储自定义对象并遍历

\* 要求:如果对象的成员变量值相同,就认为是同一个元素。

\* 提示:自定义一个学生类,给出成员变量name和age。遍历集合的时候,在控制台输出学生对象的成员变量值。

\* 两种方式遍历

\* 迭代器

\* 增强for

\*

\* 因为我们存储的元素所属的类没有重写hashCode()equals()方法,所以保证不了元素的唯一性。

\* 而我想保证,怎么办呢?重写这两个方法就可以了。

\* 如何重写呢?自动生成就可以了。

\*/

**public** **class** HashSetTest {

**public** **static** **void** main(String\[\] args) {

//创建集合对象

HashSet\<Student\> hs = **new** HashSet\<Student\>();

//创建元素对象

Student s1 = **new** Student(\"林霞\",30);

Student s2 = **new** Student(\"张玉\",35);

Student s3 = **new** Student(\"王贤\",33);

Student s4 = **new** Student(\"林霞\",30);

Student s5 = **new** Student(\"张玉\",35);

//把元素添加到集合

hs.add(s1);

hs.add(s2);

hs.add(s3);

hs.add(s4);

hs.add(s5);

//遍历集合

//增强for

**for**(Student s : hs) {

System.***out***.println(s.getName()+\"\-\--\"+s.getAge());

}

}

}

Map集合

Map:

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

创建Map集合对象并添加元素

Map:

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

举例:学生的学号和姓名

it001 林青霞

it002 张曼玉

it003 王祖贤

public interface Map<K,V>

案例代码六:

import java.util.HashMap;

import java.util.Map;

/\*

\* Map:

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

\*

\* 举例:学生的学号和姓名

\* it001 林青霞

\* it002 张曼玉

\* it003 王祖贤

\*

\* public interface Map\<K,V\>

\*

\*/

public class MapDemo {

public static void main(String\[\] args) {

//创建集合对象

Map\<String,String\> map = new HashMap\<String,String\>();

//添加元素

//put(K key,V value):添加元素。

map.put(\"it001\", \"林青霞\");

map.put(\"it002\", \"张曼玉\");

map.put(\"it003\", \"王祖贤\");

//输出集合对象

System.out.println(map);

}

}

Map集合的成员方法

V put(K key,V value):添加元素

V remove(Object key):根据键删除键值对元素

void clear():移除所有的键值对元素

boolean containsKey(Object key):判断集合是否包含指定的键

boolean containsValue(Object value):判断集合是否包含指定的值

boolean isEmpty():判断集合是否为空

int size():返回集合中的键值对的对数

案例代码七:

import java.util.HashMap;

import java.util.Map;

/\*

\* V put(K key,V value):添加元素

\* V remove(Object key):根据键删除键值对元素

\* void clear():移除所有的键值对元素

\* boolean containsKey(Object key):判断集合是否包含指定的键

\* boolean containsValue(Object value):判断集合是否包含指定的值

\* boolean isEmpty():判断集合是否为空

\* int size():返回集合中的键值对的对数

\*

\* Map集合中的实现类的数据结构只针对键有效。

\*/

public class MapDemo2 {

public static void main(String\[\] args) {

//创建集合对象

Map\<String,String\> map = new HashMap\<String,String\>();

//V put(K key,V value):添加元素

//如果键是第一次存储,就直接存储元素,返回null

//如果键不是第一次存储,就用值把以前的值替换,返回以前的值

// System.out.println(\"put:\"+map.put(\"张无忌\", \"周芷若\"));

// System.out.println(\"put:\"+map.put(\"张无忌\", \"赵敏\"));

map.put(\"张无忌\", \"赵敏\");

map.put(\"郭靖\", \"黄蓉\");

map.put(\"杨过\", \"小龙女\");

//V remove(Object key):根据键删除键值对元素

// System.out.println(\"remove:\"+map.remove(\"郭靖\"));

// System.out.println(\"remove:\"+map.remove(\"郭襄\"));

//void clear():移除所有的键值对元素

//map.clear();

//boolean containsKey(Object key):判断集合是否包含指定的键

// System.out.println(\"containsKey:\"+map.containsKey(\"郭靖\"));

// System.out.println(\"containsKey:\"+map.containsKey(\"郭襄\"));

//boolean containsValue(Object value):判断集合是否包含指定的值 自己练习

//boolean isEmpty():判断集合是否为空

//System.out.println(\"isEmpty:\"+map.isEmpty());

//int size():返回集合中的键值对的对数

System.out.println(\"size:\"+map.size());

//输出集合对象

System.out.println(map);

}

}

Map集合的获取功能测试

V get(Object key):根据键获取值

Set<K> keySet():获取所有键的集合

Collection<V> values():获取所有值的集合

案例代码八:

import java.util.Collection;

import java.util.HashMap;

import java.util.Map;

import java.util.Set;

/\*

\* V get(Object key):根据键获取值

\* Set\<K\> keySet():获取所有键的集合

\* Collection\<V\> values():获取所有值的集合

\*/

public class MapDemo3 {

public static void main(String\[\] args) {

//创建集合对象

Map\<String,String\> map = new HashMap\<String,String\>();

//添加元素

map.put(\"郭靖\", \"黄蓉\");

map.put(\"杨过\", \"小龙女\");

map.put(\"张无忌\", \"赵敏\");

//V get(Object key):根据键获取值

System.out.println(\"get:\"+map.get(\"张无忌\"));

System.out.println(\"get:\"+map.get(\"张三丰\"));

System.out.println(\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\");

//Set\<K\> keySet():获取所有键的集合

Set\<String\> set = map.keySet();

for(String key : set) {

System.out.println(key);

}

System.out.println(\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\");

//Collection\<V\> values():获取所有值的集合

Collection\<String\> values = map.values();

for(String value : values) {

System.out.println(value);

}

}

}

Map集合的遍历之键找值

Map集合的遍历

思路:Map看成是一个夫妻对的集合

A:把所有的丈夫给集中起来

B:遍历丈夫的集合,获取到每一个丈夫

C:根据丈夫去找对应的妻子

转换:

A:获取所有键的集合

B:遍历键的集合,获取到每一个键

C:根据键去找值

案例代码九:

import java.util.HashMap;

import java.util.Map;

import java.util.Set;

/\*

\* Map集合的遍历

\*

\* 思路:Map看成是一个夫妻对的集合

\* A:把所有的丈夫给集中起来

\* B:遍历丈夫的集合,获取到每一个丈夫

\* C:根据丈夫去找对应的妻子

\*

\* 转换:

\* A:获取所有键的集合

\* B:遍历键的集合,获取到每一个键

\* C:根据键去找值

\*/

public class MapDemo {

public static void main(String\[\] args) {

//创建集合对象

Map\<String,String\> map = new HashMap\<String,String\>();

//添加元素

map.put(\"郭靖\",\"黄蓉\");

map.put(\"杨过\",\"小龙女\");

map.put(\"张无忌\",\"赵敏\");

//获取所有键的集合

Set\<String\> set = map.keySet();

//遍历键的集合,获取到每一个键

for(String key : set) {

//根据键去找值

String value = map.get(key);

System.out.println(key+\"\-\--\"+value);

}

}

}

Map集合的遍历之键值对对象找键和值

Map集合遍历的方式2

思路:

A:获取所有结婚证的集合

B:遍历结婚证的集合,得到每一个结婚证

C:根据结婚证获取丈夫和妻子

转换:

A:获取所有键值对对象的集合

B:遍历键值对对象的集合,得到每一个键值对对象

C:根据键值对对象获取键和值

案例代码十:

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*
 * Map集合遍历的方式2
 * 
 * 思路:
 * 		A:获取所有结婚证的集合
 * 		B:遍历结婚证的集合,得到每一个结婚证
 * 		C:根据结婚证获取丈夫和妻子
 * 
 * 转换:
 * 		A:获取所有键值对对象的集合
 * 		B:遍历键值对对象的集合,得到每一个键值对对象
 * 		C:根据键值对对象获取键和值
 */
public class MapDemo2 {
	public static void main(String[] args) {
		//创建集合对象
		Map<String,String> map = new HashMap<String,String>();
		
		//添加元素
		map.put("郭靖","黄蓉");
		map.put("杨过","小龙女");
		map.put("张无忌","赵敏");
		
		//获取所有键值对对象的集合
//		Set<Map.Entry<K,V>> entrySet()
//		获取键值对对象的集合
		Set<Map.Entry<String,String>> set = map.entrySet();
		//遍历键值对对象的集合,得到每一个键值对对象
		for(Map.Entry<String,String> me : set) {
			//根据键值对对象获取键和值
			String key = me.getKey();
			String value = me.getValue();
			System.out.println(key+"---"+value);
		}
	}
}

Map集合的两种遍历方式图解

[外链图片转存失败(img-IrpNPAgh-1562160183825)(media\image3.png)]

HashMap集合的相关案例

HashMap集合的练习键是String值是Student

练习1:两种方式遍历

HashMap<String,Student>

键:String 学号

值:Student 学生对象

案例代码十一:

**public** **class** Student {

**private** String name;

**private** **int** age;

**public** Student() {

}

**public** Student(String name, **int** age) {

**this**.name = name;

**this**.age = age;

}

**public** String getName() {

**return** name;

}

**public** **void** setName(String name) {

**this**.name = name;

}

**public** **int** getAge() {

**return** age;

}

**public** **void** setAge(**int** age) {

**this**.age = age;

}

}

案例代码十二

import java.util.HashMap;

import java.util.Map;

import java.util.Set;

/\*

\* 练习1:两种方式遍历

\* HashMap\<String,Student\>

\* 键:String 学号

\* 值:Student 学生对象

\*/

public class HashMapTest {

public static void main(String\[\] args) {

// 创建集合对象

HashMap\<String, Student\> hm = new HashMap\<String, Student\>();

// 创建元素对象

Student s1 = new Student(\"林青霞\", 30);

Student s2 = new Student(\"张曼玉\", 35);

Student s3 = new Student(\"王祖贤\", 33);

// 添加元素到集合中

hm.put(\"it001\", s1);

hm.put(\"it002\", s2);

hm.put(\"it003\", s3);

// 遍历

// 根据键找值

Set\<String\> set = hm.keySet();

for (String key : set) {

Student value = hm.get(key);

System.out.println(key + \"\-\--\" + value.getName() + \"\-\--\" + value.getAge());

}

System.out.println(\"\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\--\");

// 根据键值对对象找键和值

Set\<Map.Entry\<String, Student\>\> set2 = hm.entrySet();

for (Map.Entry\<String, Student\> me : set2) {

String key = me.getKey();

Student value = me.getValue();

System.out.println(key + \"\-\--\" + value.getName() + \"\-\--\" + value.getAge());

}

}

}

HashMap集合的练习键是Student值是String

练习2:任选一种方式遍历

HashMap<Student,String>

键:Student 学生对象

值:String 学生住址

要求:如果学生对象的成员变量值相同,就说明是同一个键。

案例代码十三:

**public** **class** Student {

**private** String name;

**private** **int** age;

**public** Student() {

}

**public** Student(String name, **int** age) {

**this**.name = name;

**this**.age = age;

}

**public** String getName() {

**return** name;

}

**public** **void** setName(String name) {

**this**.name = name;

}

**public** **int** getAge() {

**return** age;

}

**public** **void** setAge(**int** age) {

**this**.age = age;

}

\@Override

**public** **int** hashCode() {

**final** **int** prime = 31;

**int** result = 1;

result = prime \* result + age;

result = prime \* result + ((name == **null**) ? 0 : name.hashCode());

**return** result;

}

\@Override

**public** **boolean** equals(Object obj) {

**if** (**this** == obj)

**return** **true**;

**if** (obj == **null**)

**return** **false**;

**if** (getClass() != obj.getClass())

**return** **false**;

Student other = (Student) obj;

**if** (age != other.age)

**return** **false**;

**if** (name == **null**) {

**if** (other.name != **null**)

**return** **false**;

} **else** **if** (!name.equals(other.name))

**return** **false**;

**return** **true**;

}

}

案例代码十四:

import java.util.HashMap;
import java.util.Set;

/*
 * 练习2:任选一种方式遍历
 * HashMap<Student,String>
 * 键:Student 学生对象
 * 值:String 学生住址
 * 要求:如果学生对象的成员变量值相同,就说明是同一个键。
 */
public class HashMapTest {
	public static void main(String[] args) {
		//创建集合对象
		HashMap<Student,String> hm = new HashMap<Student,String>();
		
		//创建元素对象
		Student s1 = new Student("林青霞",30);
		Student s2 = new Student("张曼玉",35);
		Student s3 = new Student("王祖贤",33);
		Student s4 = new Student("张曼玉",35);
		
		//添加元素到集合中
		hm.put(s1, "北京");
		hm.put(s2, "上海");
		hm.put(s3, "西安");
		hm.put(s4, "香港");
		
		//键找值
		Set<Student> set = hm.keySet();
		for(Student key : set) {
			String value = hm.get(key);
			System.out.println(key.getName()+"---"+key.getAge()+"---"+value);
		}
	}
}

集合的嵌套练习之ArrayList嵌套HashMap

需求:ArrayList集合嵌套HashMap集合并遍历。

定义一个ArrayList集合,它包含三个元素,每一个元素都是HashMap类型的。

每一个HashMap集合的键和值都是String类型的,

键:String 丈夫的姓名

值:String 妻子的姓名

给出如下的字符串数据,请用代码实现需求。

第一个HashMap集合的元素:

孙策 大乔

周瑜 小乔

第二个HashMap集合的元素:

郭靖 黄蓉

杨过 小龙女

第三个HashMap集合的元素:

令狐冲 任盈盈

林平之 岳灵珊

案例代码十五:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;

/*
 * 需求:ArrayList集合嵌套HashMap集合并遍历。
 * 定义一个ArrayList集合,它包含三个元素,每一个元素都是HashMap类型的。
 * 每一个HashMap集合的键和值都是String类型的,
 * 键:String		丈夫的姓名
 * 值:String		妻子的姓名
 * 给出如下的字符串数据,请用代码实现需求。
 * 第一个HashMap集合的元素:
 * 		孙策		大乔
 * 		周瑜		小乔
 * 第二个HashMap集合的元素:
 * 		郭靖		黄蓉
 * 		杨过		小龙女
 * 第三个HashMap集合的元素:
 * 		令狐冲	任盈盈
 * 		林平之	岳灵珊
 */
public class ArrayListIncludeHashMapTest {
	public static void main(String[] args) {
		//创建集合对象
		ArrayList<HashMap<String,String>> array = new ArrayList<HashMap<String,String>>();
		
		//创建元素1
		HashMap<String,String> hm1 = new HashMap<String,String>();
		hm1.put("孙策","大乔");
		hm1.put("周瑜","小乔");
		//把元素添加到array中
		array.add(hm1);
		
		//创建元素2
		HashMap<String,String> hm2 = new HashMap<String,String>();
		hm2.put("郭靖","黄蓉");
		hm2.put("杨过","小龙女");
		//把元素添加到array中
		array.add(hm2);
		
		//创建元素3
		HashMap<String,String> hm3 = new HashMap<String,String>();
		hm3.put("令狐冲","任盈盈");
		hm3.put("林平之","岳灵珊");
		//把元素添加到array中
		array.add(hm3);
		
		//遍历ArrayList集合
		for(HashMap<String,String> hm : array) {
			Set<String> set = hm.keySet();
			for(String key : set) {
				String value = hm.get(key);
				System.out.println(key+"---"+value);
			}
			System.out.println("-----------------");
		}
		
	}
}

集合的嵌套练习之HashMap嵌套ArrayList

需求:HashMap集合嵌套ArrayList集合并遍历。

定义一个HashMap集合,它包含三个元素,每一个元素的键是String类型,值是ArrayList类型。

键:String 人物来自哪部电视剧

值:ArrayList 人物的名称

每一个ArrayList集合的数据是String类型的。

给出如下的字符串数据,请用代码实现需求。

第一个ArrayList集合的元素:(三国演义)

诸葛亮

赵云

第二个ArrayList集合的元素:(西游记)

唐僧

孙悟空

第三个ArrayList集合的元素:(水浒传)

武松

鲁智深

案例代码十六:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;

/*
 * 需求:HashMap集合嵌套ArrayList集合并遍历。
 * 定义一个HashMap集合,它包含三个元素,每一个元素的键是String类型,值是ArrayList类型。
 * 键:String			人物来自哪部电视剧
 * 值:ArrayList		人物的名称
 * 每一个ArrayList集合的数据是String类型的。
 * 给出如下的字符串数据,请用代码实现需求。
 * 第一个ArrayList集合的元素:(三国演义)
 * 		诸葛亮
 * 		赵云
 * 第二个ArrayList集合的元素:(西游记)
 * 		唐僧
 * 		孙悟空
 * 第三个ArrayList集合的元素:(水浒传)
 * 		武松
 * 		鲁智深
 */
public class HashMapIncludeArrayListTest {
	public static void main(String[] args) {
		//创建集合对象
		HashMap<String,ArrayList<String>> hm = new HashMap<String,ArrayList<String>>();
	
		//创建元素1
		ArrayList<String> sgyy = new ArrayList<String>();
		sgyy.add("诸葛亮");
		sgyy.add("赵云");
		//把元素添加到hm中
		hm.put("三国演义", sgyy);
		
		//创建元素2
		ArrayList<String> xyj = new ArrayList<String>();
		xyj.add("唐僧");
		xyj.add("孙悟空");
		//把元素添加到hm中
		hm.put("西游记", xyj);
		
		//创建元素3
		ArrayList<String> shz = new ArrayList<String>();
		shz.add("武松");
		shz.add("鲁智深");
		//把元素添加到hm中
		hm.put("水浒传", shz);
		
		//遍历集合
		Set<String> set = hm.keySet();
		for(String key : set) {
			System.out.println(key);
			ArrayList<String> value = hm.get(key);
			for(String s : value) {
				System.out.println("\t"+s);
			}
		}
	}
}

总结

Set集合 就是一个包含不重复元素的Collection集合对象
	       存储元素的顺序和取出元素的顺序是不一致的
HashSet 存储元素不重复的原因:
	String
	Integer
	....0
	重写过hashCode和equals方法 所以在存放的时候会直接自动进行判断
	所以我们在定义自定义引用类型的时候 如果想要在集合中去重 就必须对该类进行两个方法的重写


Map集合
	存储元素使用键值对的方式 一个key键 -> 对应一个value 而且key是不可以重复的
	Map<key,value> map = new HashMap<>();

	往map集合中存放元素使用put(key,value);
	集合中的实现类的toString方法都已经被重写过 所以可以直接输出 打印的就是集合中元素的字符串拼接

	获取所有的键的集合
		Set<泛型> set = map.keySet();
	获取所有值的集合
		Collection<泛型> c = map.values();
	通过key -> value
		value = map.get(key);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值