集合

定义:JAVA的集合是工具类,可以存储任意数量的具有共同属性的对象。
应用场景:1. 无法预测存储数据的数量。
2. 同时存储具有一对一关系的数据。
3. 需要进行数据的增删。
4. 数据重复问题。
集合框架的结构:
Collection:存储类的对象。有3个子接口,List序列,Queue队列和Set集。其中List和Queue是有序的和允许重复,Set是无序的和不允许重复。
Map:存储键值对。主要实现类是HashMap。
List的主要实现类:ArrayList,是大小动态变化的数组。
Queue的主要实现类:LinkList是链表。
Set的主要实现类:HashSet。

List序列

定义:1. List是元素有序并且可以重复的集合,成为序列。
2. List可以精确的控制每个元素的插入位置,或删除某个位置的元素。
3. List的两个主要实现类是ArrayList和LinkedList。
ArrayList的特点:1. ArrayList底层是由数组实现的。
2. 动态增长,以满足应用程序的需求。
3. 在列表尾部插入或删除数据非常有效。
4. 更适合查找和更新元素。
5. ArrayList中的元素可以为null。

代码例子:

public class ArrayListTest {

	public static void main(String[] args) {

		// 实例化一个ArrayList序列。
		List<String> list = new ArrayList<String>();

		// 向序列中添加元素。
		list.add("Java");
		list.add("C");
		list.add("C++");
		list.add("Go");
		list.add("Php");

		// 遍历输出序列中的元素。
		for (int i = 0; i < list.size(); i++) {

			System.out.print(" " + list.get(i));

		}

		// 从序列中通过下标删除元素。
		list.remove(2);

		// 从序列中通过对象删除元素。
		list.remove("Php");

		System.out.println();

		for (int i = 0; i < list.size(); i++) {

			System.out.print(" " + list.get(i));

		}

	}

}

输出结果为:

java 集合的优点 java中集合的作用_set

Set集

定义:Set是元素无序并且不可以重复的集合,被称为集。
HashSet: 1. HashSet是Set的一个重要实现类,成为哈希集。
2. HashSet中的元素无需并且不可以重复。
3. HashSet中只允许一个null元素。
4.具有良好的存取和查找性能。

在HashSet集合中取到元素的方法:Iterator迭代器。
1. Iterator接口可以以统一的方式对各种集合元素进行遍历。
2. hasNext()方法检测集合中是否还有下一个元素。
3. next()方法返回集合中的下一个元素。

代码例子:

public class HashSetTest {

	public static void main(String[] args) {

		Set<String> hs = new HashSet<String>();

		// 向集合HashSet中添加元素。
		hs.add("Red");
		hs.add("Blue");
		hs.add("Yellow");
		hs.add("Orange");
		hs.add("White");

		Iterator<String> it = hs.iterator();

		// 迭代器遍历集合,注意迭代器的next()方法只能使用一次。否则可能引起元素的变化位置不准。
		while (it.hasNext()) {
			System.out.println(it.next());

		}

		it = hs.iterator();

		// 在HashSet集合中查找元素。
		while (it.hasNext()) {

			String a1 = it.next().toString();
			if (a1.equals("Blue")) {
				System.out.println("蓝色已找到:" + a1);
				break;
			}

		}

		it = hs.iterator();

		// 在HashSet集合中删除元素。
		while (it.hasNext()) {
			String a1 = it.next().toString();
			if (a1.equals("Orange")) {

				hs.remove(a1);
				System.out.println("橘色已删除:" + a1);
				break;
			}

		}

		it = hs.iterator();
		while (it.hasNext()) {
			System.out.println(it.next());

		}

	}

}

输出结果为:

java 集合的优点 java中集合的作用_集合_02

Map键值对

Map的特性:
1. Map中的数据是以键值对(key-value)的形式存储的。
2. key-value以Entry类型的对象实例存在。
3. 可以通过key值快速地查找value,一个值可以有多个键。
4. 一个映射不能包含重复的键。
5. 每个键最多只能映射到一个值。

HashMap的特点:

  1. 基于哈希表的Map接口的实现。
  2. 允许使用null值和null键。
  3. key值不允许重复。
  4. HashMap中的Entry对象是无序的。

注:虽然键不允许重复,但输入一样的键不会报错,重复的值会覆盖之前键一样的值。

代码例子:

public class HashMapTest {

	public static void main(String[] args) {

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

		// 向HashMap集合中添加元素。
		map.put("Cat", "猫");
		map.put("dog", "狗");
		map.put("bird", "鸟");

		// 迭代器遍历集合中的元素。
		Iterator itm = map.values().iterator();
		while (itm.hasNext()) {
			System.out.println(itm.next());
		}
        // entrySet()方法是返回一个包含集合中所有映射的Set
		Set<Entry<String, String>> set = map.entrySet();

		// 遍历输出集合中的键值对。
		for (Entry<String, String> entry : set) {
			System.out.println("键 = " + entry.getKey() + " 值 = " + entry.getValue());
		}

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

		Set<String> ks = map.keySet();

		for (String s : ks) {
			System.out.println("键 = " + s + " 值 = " + map.get(s));
		}

	}

}

输出结果为:

java 集合的优点 java中集合的作用_java_03