Java 集合类Collection、List

Collection接口:

1.集合可以理解为一个动态的对象数组,不同的是集合中的对象内容可以任意扩充。

也就是说在集合当中的操作比较方便,容易添加或者删除

2.集合的特点:

性能高

容易扩展和修改

这也是为什么使用集合而不使用数组的主要原因

3.Collection的常用子类

List

Set

Queue

这几个子类也是它比较常用的

接口Collection<E>

所有超级接口:

Iterable<E>

所有已知接口:

BeanContextBeanContextServices,
BlockingDeque<E>,
BlockingQueue<E>,
Deque<E>,
List<E>, NavigableSet<E>, Queue<E>, Set<E>, SortedSet<E>

  • 所有已知实现类:
  • AbstractCollection, AbstractList,
    AbstractQueue, AbstractSequentialList,
    AbstractSet, ArrayBlockingQueue,
    ArrayDeque,
    ArrayList, AttributeList, BeanContextServicesSupport,
    BeanContextSupport,
    ConcurrentLinkedQueue,
    ConcurrentSkipListSet,
    CopyOnWriteArrayList,
    CopyOnWriteArraySet,
    DelayQueue, EnumSet, HashSet, JobStateReasons,
    LinkedBlockingDeque,
    LinkedBlockingQueue,
    LinkedHashSet, LinkedList, PriorityBlockingQueue,
    PriorityQueue, RoleList, RoleUnresolvedList,
    Stack, SynchronousQueue, TreeSet, Vector
public interface Collection<E>extends Iterable<E>

Collection层次结构中的根接口。Collection表示一组对象,这些对象也称为collection的元素。一些collection允许有重复的元素,而另一些则不允许。一些collection是有序的,而另一些则是无序的。JDK不提供此接口的任何实现:它提供更具体的子接口(如Set和List)实现。此接口通常用来传递collection,并在需要最大普遍性的地方操作这些collection。

包(bag)或多集合(multiset)(可能包含重复元素的无序collection)应该直接实现此接口。

所有通用的Colelction实现类(通常通过它的一个子接口间接实现collection)应该提供两个“标准”构造方法:一个是void(无参数)构造方法,用于创建空collection;另一个是带有Collection类型单参数的构造方法,用于创建一个具有参数相同元素新的collection。实际上,后者允许用户复制任何collection,以生成所需实现类型的一个等效collection。尽管无法强制执行此约定(因为接口不能包含构造方法),但是Java平台库中所有通用的Collecion实现都遵从它。

此接口中包含的“破坏性”方法,是指可修改其操作的collection的那些方法,如果此collection不支持该操作,则指定这些方法抛出UnsupportedOperationException。如果是这样,那么在调用对该collection无效时,这些方法可能,但并不一定抛出UnsupportedOperationException。例如,如果要添加的collection为空且不可修改,则对该collection调用addAll(Collection)方法时,可能但并不一定抛出异常。

一些collection实现对它们可能包含的元素有所限制。例如,某些实现禁止null元素,而某些实现则对元素的类型有限制。试图添加不合格的元素将抛出一个未经检验的异常,通常是NullPointerException或ClassCastException。试图查询是否存在不合格的元素可能抛出一个异常,或者只是简单地返回false;某些实现将表现出前一种行为,而某些实现则表现后一种。较为常见的是,试图对某个不合格的元素执行操作且该操作的完成不会导致将不合格的元素插入collection中,将可能抛出一个异常,也可能操作成功,这取决于实现本身。这样的异常在此接口的规范中标记为“可选”。

由每个collection来确定其自身的同步策略。在没有实现的强烈保证的情况下,调用由另一进程正在更改的collection的方法可能会出现不确定行为;这包括直接调用,将collection传递给可能执行调用的方法,以及使用现有迭代器检查collection。

Collections Framework 接口中的很多方法是根据equals方法定义的。例如,contains(Object o)方法的规范声明:“当且仅当此collection包含至少一个满足(o==null ? e==null:o.equals(e))的元素e时,返回true。”不应该将此规范理解为它暗指调用具有非空参数o的Collection.contains方法会导致为任意地e元素调用o.equals(e)方法。可随意对各种实现执行优化,只要避免调用equals即可,例如,通过首先比较两个元素的哈希码。(Object.hashCode()规范保证哈希码不相等的两个对象不会相等)。较为常见的是,各种Collections Framework 接口的实现可随意利用底层Object方法的指定行为,而不管实现程序认为它是否合适。

此接口是 Java Collections Framework 的一个成员。

List接口:Collection的子接口

1.List接口可以存放任何数据,而且在List接口中内容是可以重复的

2.List接口常用子类:

ArrayList  --JDK1.2推出之后,异步处理方式,性能高,属于非线程安全

Vector     --JDK1.0推出,采用同步处理方式,性能低,属于线程安全

3.常用操作:

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

查找指定的对象是否存在:int indexOf(Object o)

package com.jikexueyuan.list;

import java.util.ArrayList;
import java.util.List;

public class ListDemo01 {

	public static void main(String[] args) {
		List<String> lists = null;
		lists = new ArrayList<String>();
		lists.add("A");
		lists.add("B");
		lists.add("A");
		for(int i=0; i<lists.size(); i++){
			System.out.println(lists.get(i));
		}
		lists.remove(0);
		System.out.println("删除之后:");
		for(int i=0; i<lists.size(); i++){
			System.out.println(lists.get(i));
		}
		System.out.println("集合是否为空:"+lists.isEmpty());
		System.out.println("B是否存在:"+lists.indexOf("B"));
		//indexOf(Object o)  返回类型:int  返回此列表中第一次出现的指定元素的索引;如果
		//此列表不包含该元素,则返回-1
	}

}
package com.jikexueyuan.list;

import java.util.List;
import java.util.Vector;

public class ListDemo02 {

	public static void main(String[] args) {
		List<String> lists = null;
		lists = new Vector<String>();
		lists.add("A");
		lists.add("B");
		for (int i = 0; i < lists.size(); i++) {
			System.out.println(lists.get(i));
		}
	}

}

Set接口:

1.Set接口中不能加入重复元素,但是可以排序。

2.Set接口的常用子类

散列存放:HashSet

有序存放:TreeSet

package com.jikexueyuan.list;

import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetDemo01 {

	public static void main(String[] args) {
		Set<String> s = null;
		s = new HashSet<String>();
		s.add("B");
		s.add("A");
		s.add("C");
		s.add("D");
		s.add("E");
		s.add("F");
		System.out.println(s);
//		s = new TreeSet<String>();
//		s.add("B");
//		s.add("A");
//		s.add("C");
//		s.add("D");
//		s.add("E");
//		s.add("F");
//		System.out.println(s);
	}

}

Iterator接口:

1.集合输出的标准操作:

标准做法,使用Iterator接口

2.操作原理:

Iterator是专门的迭代输出接口,迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有内容则把内容取出

3.注意事项:

在迭代输出的同时,不能通过集合进行remove操作

package com.jikexueyuan.list;

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

public class IteratorDemo01 {

	public static void main(String[] args) {
		List<String> lists = new ArrayList<String>();
		lists.add("A");
		lists.add("B");
		lists.add("C");
		lists.add("D");
		lists.add("E");
		lists.add("F");
		Iterator<String> iter = lists.iterator();
		while (iter.hasNext()) {
			String str = iter.next();
			if ("A".equals(str)) {
				iter.remove();
			}else{
				System.out.println(str);
			}
		}
	}

}

Map接口

1.保存形式:

key----->value的方式保存(键值对方式保存,通过key来找到value)

例如:小明:13433321122(通过名字找到电话号码)

2.常用子类:

HashMap:无序存放,key不允许重复

Hashtable:无序存放,key不允许重复

在以Map接口存放数据的时候key都是唯一的。

时间: 2024-11-03 21:03:53

Java 集合类Collection、List的相关文章

Java 集合类 (Collection)

为什么要使用集合类? 当你事先不知道要存放数据的个数,或者你需要一种比数组下标存取机制更灵活的方法时,你就需要用到集合类. 集合类存放于java.util包中 java.util中共有13个类可用于管理集合对象,它们支持集.列表或映射等集合 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference) 集合类型主要有3种:set(集).list(列表)和map(映射) 总的说来,Java API中所用的集合类,都是实现了Collect

Java集合排序及java集合类详解--(Collection, List, Set, Map)

1         集合框架 1.1         集合框架概述 1.1.1         容器简介 到目前为止,我们已经学习了如何创建多个不同的对象,定义了这些对象以后,我们就可以利用它们来做一些有意义的事情. 举例来说,假设要存储许多雇员,不同的雇员的区别仅在于雇员的身份证号.我们可以通过身份证号来顺序存储每个雇员,但是在内存中实现呢?是不是要准备足够的内存来存储1000个雇员,然后再将这些雇员逐一插入?如果已经插入了500条记录,这时需要插入一个身份证号较低的新雇员,该怎么办呢?是在内

Java集合类之Collection接口学习

今天看到Collection集合类这个词,发现脑海里没有太多的记忆,于是重新复习了Collection接口.迟点再总结下Map接口. 下面是自己在MyEclispe中敲的代码,只有实践才可以提高记忆. /** * --Collection接口是Set接口和List接口的父接口,通常情况下不被直接使用,但定义了一些通用方法,通过这些方法可以实现对集合的基本操作. Collection接口的常用方法如下: 1)add():向集合中添加对象 2)remove():向集合中移除对象 3)isEmpty(

Java API ——Collection集合类 &amp; Iterator接口

对象数组举例: 学生类: package itcast01; /** * Created by gao on 15-12-9. */ 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() {

Java集合类: Set、List、Map、Queue使用

目录 1. Java集合类基本概念 2. Java集合类架构层次关系 3. Java集合类的应用场景代码 1. Java集合类基本概念 在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量.一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果我们需要保存一个可以动态增长的数据(在编译时无法确定具体的数量),java的集合类就是一个很好的设计方案了. 集合类主要负责保存.盛装其他数据,因此集合类也被称为容

Java 集合类详解

1.java集合类图 1.1 1.2 上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线边框的是接口,比如Collection,Iterator,List等. 发现一个特点,上述所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含hashNext(),next(),remove()三种方法.它的一个

摘抄转载前辈们的Java集合类总结

JAVA 集合类介绍和使用    类关系示意图  Iterable(接口)      │      └--Collection (接口)          ├-List(接口)          │ ├-LinkedList  不同步  (构造同步:List list = Collections.synchronizedList(new LinkedList(...));)          │ ├-ArrayList   不同步           │ └-Vector      同步    

Java集合类相关面试题

1.Collection和Collections的区别 java.util.Collection 是一个集合接口,Collection接口在Java类库中有很多具体的实现,例如List.Set java.util.Collections 是针对集合类的一个帮助类,它提供了一系列的静态方法实现对各种集合的搜索.排序.线程安全化等操作. 2.ArrayList与Vector的区别 这两个类都实现了List接口(List接口继承自Collection接口).它们都是有序集合,它们内部的元素都是可以重复

Java中Collection和Collections的区别

1.java.util.Collection 是一个集合接口(集合类的一个顶级接口).它提供了对集合对象进行基本操作的通用接口方法.Collection接口在Java 类库中有很多具体的实现.Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set. Collection   ├List   │├LinkedList   │├ArrayList   │└Vector   │ └Stack   └Set 2.java.util.Collectio