黑马程序员_java集合学习笔记

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


Java集合


面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就要对对象进行存储,集合就是存储对象最常用的一种方式。

数组和集合类同是容器,有何不同?

数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储任意数据类型,集合只能存储对象。

集合类的特点

集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。

 

总结:集合类比数组强大,类似于包装类与基本数据类型!

集合框架的构成及分类:



两大接口:

Java集合类主要由两个接口派生出来:

Collection

Set          :不能存放重复对象

List         :可存放重复对象,有序

Queue     :队列

SortedSet :可对集合数据排序

Map      

SortedMap      :可对集合数据排

Collection接口:

该接口的方法:

boolean add(Object o):该方法用于向集合里面添加一个元素,若集合对象被添加操作改变了,返回true.

boolean addAll(Collection c):把集合c里面的所有元素添加到指定集合里面去,如果集合对象被添加操作改变了返回true.

void clear():清除集合里面的所有元素,将集合长度变为0。

boolean contains(Object o):返回集合里是否包含指定的元素。

boolean containsAll(Collection c):返回集合里是否包含集合c内所有的元素。

boolean isEmpty():返回集合是否为空(长度是否为0)。

Iterator iterator():返回一个Iterator对象,用于遍历集合里的元素。

boolean remove(Object o):删除集合中指定元素o。

boolean removeAll(Collection c):从集合中删除集合c里面的元素。若删除一个或以上返回true。

boolean retainAll(Collection c):从集合中删除集合c里不包含的元素。

int size():得到集合元素的个数。

Object[]toArray():把集合转成一个数组,所有集合元素编程数组元素

如:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class coll {
	public static void main(String[] args) {
		Collection<String> c = new ArrayList<String>();

		c.add("guan");
		c.add("guan1");
		c.add("guan2");
		c.add("gaun3");
		
		Iterator<String> it = c.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
	}

}

输出:

guan
guan1
guan2
guan3

Iterator接口:


Iterator主要遍历Collection集合中的元素,也有称为迭代器或迭代精灵。

boolean hasNext():若被迭代的集合元素还没有被遍历,返回true.

Object next():返回集合的下一个元素.

void remove():删除集合上一次next()方法返回的元素。(若集合中有多个相同的元素,都可以删掉)

iterator对于集合才能用,for不同,只要是循环都可用。

 

迭代是取出集合中元素的一种方式。

因为Collection中有iterator方法,所以每一个子类集合对象都具备迭代器。

迭代器在Collcection接口中是通用的,它替代了Vector类中的Enumeration(枚举)。迭代器的next方法是自动向下取元素,要避免出现NoSuchElementException。

迭代器的next方法返回值类型是Object,所以要记得类型转换。


集合遍历输出方式:

1.        Iterable接口(迭代遍历) 注:优先选择Iterator接口,遍历Collection里所有元素,也称为迭代器和迭代精灵;迭代是取出集合中元素的一种推荐方式。

2.        Foreach循环 注:可以直接用,使用场合:数组和Iterable对象!

3.        For循环     注:在()内实例化Iterable对象,进行遍历!

4.        先用toArray方法输出成为数组,再用Foreach循环!


如:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

public class coll {
	public static void main(String[] args) {
		List<String> l = new ArrayList();

		l.add("guan1");
		l.add("guan2");
		l.add("guan3");
		l.add("guan4");

		System.out.println(l);
		/**
		 * 遍历输出:四种方式
		 */

		// 1、推荐使用的Iterator对象,迭代输出!
		Iterator it = l.iterator();
		while (it.hasNext()) {
			System.out.println("迭代输出:" + it.next());
		}

		// 2、对集合进行fore循环!
		for (String str : l) {
			System.out.println("fore集合迭代输出:" + str);
		}

		// 3、for循环迭代,在for方法体内部实例化Iterator对象!
		int i = 0;// for方法体内定义项不能出现多种不同类型
		for (Iterator iter = l.iterator(); i < l.size(); i++) {
			System.out.println("for循环迭代实例化输出:" + iter.next());
		}

		// 4、先将集合转换为数组,再利用数组的遍历输出;
		Object[] o = l.toArray();
		for (Object object : o) {
			System.out.println("转换数组迭代输出:" + object);
		}

	}

}

输出:

[guan1, guan2, guan3, guan4]
迭代输出:guan1
迭代输出:guan2
迭代输出:guan3
迭代输出:guan4
fore集合迭代输出:guan1
fore集合迭代输出:guan2
fore集合迭代输出:guan3
fore集合迭代输出:guan4
for循环迭代实例化输出:guan1
for循环迭代实例化输出:guan2
for循环迭代实例化输出:guan3
for循环迭代实例化输出:guan4
转换数组迭代输出:guan1
转换数组迭代输出:guan2
转换数组迭代输出:guan3
转换数组迭代输出:guan4


Map接口:

map接口常用方法:

void clear():删除该Map对象中所有的key-value对。也就是清理该集合;

boolean containsKey(Object key):查询Map中是否包含指定的key;

boolean containsValue(Object  value):查询Map中是否包含至少一个value;

Set entrySet():返回Map所包含的key-value对所组成的Set集合,每个集合元素都是Map.Entry对象(Entry是Map内部类);

Object get(Object key):返回指定key所对应的value,若此Map中不包含该key,返回null;

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

Set keySet():返回该Map中所有key所组成的Set集合;

Object put(Object key,Object value):添加一个key-value对,若Map中已有与key相等的key-value对,则新的key-value对覆盖原来的key-value对;

void putAll(Map m):将m中的key-value赋值到调用该方法的Map对象中;

Object remove(Object key):删除指定key所对应的key-value对,返回本删除key所关联的value,若key不存在,返回null;

int size():返回该Map里面key-value对的个数;

Collection values():返回Map里所有value组成的Collection。


如:

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

public class test {
	public static void main(String[] args) {
		Map m = new HashMap();

		m.put(1, "guan");
		m.put(2, "jia");
		m.put(3, "hao");

		System.out.println(m);

		Set s = m.entrySet();
		System.out.println(s);

		s = m.keySet();
		System.out.println(s);//[1, 2, 3]

		for (Object key : s) {
			System.out.println(key);//Key
			System.out.println(m.get(key));//Value
		}

		Collection c = m.values();
		System.out.println(c);

	}
}

Map集合的输出:

方法一:

1.通过entrySet方法变成Set对象

2.调用SetIterator方法,此时每个Iterator对象是Map.Entry对象

3.Map.Entry分离出 key - value

方法二:

1.通过keySet得到Map集合多有keySet集合

2.调用SetIterator方法,此时每个Iterator对象是key

3.通过Map的getValue(key)得到value值


如:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class test {
	public static void main(String[] args) {
		Map<Integer, String> m = new HashMap<Integer, String>();

		m.put(1, "guan");
		m.put(2, "jia");
		m.put(3, "hao");

		//第一种方法
		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));

		}
	}
}
输出:
1  guan
2  jia
3  hao
1   guan
2   jia
3   hao



 
  
 
 


 












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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值