4年.Net程序员转Java学习笔记(5)集合架构图及常用方法

集合的架构图

在这里插入图片描述
集合主要由3个部分组成——迭代器Iterator、集合Collection(包括List和Set)、map集合。这些都是接口。

1.List

List<String> arr= new ArrayList<String>();//实例化
arr.add("海上生明月");					  //添加元素
arr.add("天涯共此时");
arr.add("自挂东南枝");
arr.add("啥都不害怕");
arr.remove(2);							  //移除
for (int i = 0; i < arr.size(); i++) {	  //遍历,通过下标获取
	System.out.println(arr.get(i));
}
arr.remove(2);
for(String s:arr) {						  //遍历
	System.out.println(s);
}

2.Set

Date d1= new Date();
Date d2=new Date(1554630549863L);
Date d3=new Date(1554230549863L);
Date d4=new Date(1554430549863L);
System.out.println(d1.getTime());
Set<Date> sj= new HashSet<Date>();		//实例化HashSet
sj.add(d1);
sj.add(d2);								//新增元素
sj.add(d3);
sj.add(d4);
sj.add(d4);								//重复add,无效
sj.add(d4);
sj.add(d4);
//以下实际指挥输出5个值,重复值不会add进去
for(Date d:sj) {
	System.out.println(d.getTime());	
}

3.Map

Map<String, Person> map = new HashMap<String, Person>();		//实例化HashMap
Person p1= new Person();										//创建一个Person对象
p1.setCode("2019");
p1.setName("Bao");

Person p2= new Person();
p2.setCode("2018");
p2.setName("Long");

Person p3= new Person();
p3.setCode("2020");
p3.setName("Cheng");

map.put(p1.getCode(), p1);										//插入一个对象,包含键值和对象
map.put(p2.getCode(), p2);
map.put(p3.getCode(), p3);
map.put(p3.getCode(), p1);										//键值不能重复
for(Map.Entry<String, Person> entry:map.entrySet()) {			//遍历方法:将Map转为Collection再遍历
	System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue().getName()); 
}
System.out.println(map.containsKey("2021")); 					//判断集合是否包含键值
System.out.println(map.containsKey("2020")); 
System.out.println(map.containsValue(p3)); 						//判断集合是否包含对象
System.out.println(map.containsValue(new Person())); 

输出的结果为:
Key = 2019, Value = Bao
Key = 2018, Value = Long
Key = 2020, Value = Bao
false
true
false
false

Map的迭代方法还可以是这样:
如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。

Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 
//遍历map中的键 
for (Integer key : map.keySet()) { 
  System.out.println("Key = " + key); 
} 
//遍历map中的值 
for (Integer value : map.values()) { 
  System.out.println("Value = " + value); 
}

该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。

还有一种迭代方法是使用迭代器。

4.Iterator

Iterator<Map.Entry<String,Person>> entries= map.entrySet().iterator();//先将Map转成Collection再转成iterator
while(entries.hasNext()) {										//像游标一样,判断是否仍有值
	Map.Entry<String, Person> p = entries.next();				//取下一个值
	System.out.println("Key = " + p.getKey() + ", Value = " + p.getValue().getName()); 
}

输出结果为:
Key = 2019, Value = Bao
Key = 2018, Value = Long
Key = 2020, Value = Bao

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值