集合

https://blog.csdn.net/qq_28261343/article/details/52614411

1)集合的由来?

Java是面向对象编程语言,经常需要操作很多对象,必要时需存储对象(对Java语言而言,存储的通常是对象的引用,以达到复用或管理等目的),常见容器如数组和StringBuffer(线程安全但效率较低,为了提高效率而引进StringBuilder)。 通常数组的长度固定,所以不适合做变化的需求(可以手动去重新分配调整,较麻烦),而StringBuffer(或StringBuilder)存储元素为字符串,皆不符合存储任意元素的要求。因此集合就应运而生了。

2)集合和数组的区别?

1 长度限制之别

  • 数组长度是固定不变的
  • 集合的大小是可动态变化的

2 存储类型之别

  • 一个数组存储的元素可以是基本类型,也可以是引用类型,且只能存储同一种类型的元素
  • 一个集合存储的元素只能是引用类型,但集合可以存储不同类型的元素(但集合一般存储同一种类型,可以用泛型加以控制)

3 访问元素方式

  • 数组是根据索引来获取元素的
  • 集合通常会提供一个迭代器来方便访问元素
 // iterator 迭代器, 方式1 
Iterator<String> iterator = collection.iterator(); 
while(iterator.hasNext()){
       System.out.print(iterator.next()+" "); 
} 
System.out.println("\n"+"-------------------");

 // 方式2 ,for循环完iterator1就会被销毁,节约内存提高效率 
for (Iterator<String> iterator1 = collection.iterator(); iterator1.hasNext(); ) { 
       System.out.print(iterator1.next()+" "); 
}

集合遍历输出方式

  1. Iterable 接口(迭代遍历) 注:优先选择 Iterator 接口,遍历 Collection 里所有元素,也称为迭代器和迭代精灵;迭代是取出集合中元素的一种推荐方式。
  2.  Foreach 循环 注:可以直接用,使用场合:数组和 Iterable 对象!
  3. For 循环 注:在()内实例化 Iterable 对象,进行遍历!
  4. 先用 toArray 方法输出成为数组,再用 Foreach 循环!

Collection和Collections的区别

Collection是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法。实现该类的接口主要有list和set,gai集合类的上级接口,继承与他有关的接口主要有List和Set ,该接口的设计目标是为各种具体的集合提供最大化统一的操作方式

Collections是针对集合类的一个帮助类,包装类。他提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作

Map 集合的输出

按照最正统的做法,所有的 Map 集合的内容都要依靠 Iterator 输出,以上虽然是完成了输出,
但是完成的不标准,Map 集合本身并不能直接为 Iterator 实例化,如果此时非要使用 Iterator
输出 Map 集合中内容的话,则要采用如下的步骤:
方法一:
1.通过 entrySet 方法变成 Set 对象
2.调用 Set 的 Iterator 方法,此时每个 Iterator 对象是 Map.Entry 对象
3.对 Map.Entry 分离出 key - value
方法二:
1.通过 keySet 得到 Map 集合多有 key 的 Set 集合
2.调用 Set 的 Iterator 方法,此时每个 Iterator 对象是 key 值
3.通过 Map 的 getValue(key)得到 value 值
 

package july7;
//把Map中的元素取出来
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class Demo18 {
public static void main(String[] args) {
Map<Integer, String> m = new HashMap<Integer, String>();
m.put(1, "jack");
m.put(2, "rose");
m.put(3, "lucy");
//第一种方法
Set s = m.entrySet();
Iterator it = s.iterator();while(it.hasNext()){
Map.Entry me = (Entry) it.next();
System.out.println(me.getKey()+" "+me.getValue());
}
//第二种方法
s = m.keySet();//得到的是key的集合
it = s.iterator();//然后将key迭代出来
while(it.hasNext()){
int i = (int)it.next();
System.out.println(i+" "+m.get(i));
}
}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值