`
baby69yy2000
  • 浏览: 187880 次
  • 性别: Icon_minigender_1
  • 来自: 自己输入城市...
社区版块
存档分类
最新评论

java集合操作

    博客分类:
  • Util
阅读更多
package Sets;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

/**
 * java集合操作
 * 
 * @author baby69yy2000
 * 
 */
public class Sets {

	/** 求并集 */
	public static <T> Set<T> union(Set<T> setA, Set<T> setB) {
		Set<T> setUnion;

		if (setA instanceof TreeSet)
			setUnion = new TreeSet<T>();
		else
			setUnion = new HashSet<T>();

		Iterator<T> iterA = setA.iterator();
		while (iterA.hasNext())
			setUnion.add(iterA.next());

		Iterator<T> iterB = setB.iterator();
		while (iterB.hasNext())
			setUnion.add(iterB.next());
		return setUnion;
	}

	/** 求交集 */
	public static <T> Set<T> intersection(Set<T> setA, Set<T> setB) {
		Set<T> setIntersection;
		T item;

		if (setA instanceof TreeSet)
			setIntersection = new TreeSet<T>();
		else
			setIntersection = new HashSet<T>();

		Iterator<T> iterA = setA.iterator();
		while (iterA.hasNext()) {
			item = iterA.next();
			if (setB.contains(item))
				setIntersection.add(item);
		}
		return setIntersection;
	}

	/** 求差集 */
	public static <T> Set<T> difference(Set<T> setA, Set<T> setB) {
		Set<T> setDifference;
		T item;

		if (setA instanceof TreeSet)
			setDifference = new TreeSet<T>();
		else
			setDifference = new HashSet<T>();

		Iterator<T> iterA = setA.iterator();
		while (iterA.hasNext()) {
			item = iterA.next();
			if (!setB.contains(item))
				setDifference.add(item);
		}
		return setDifference;
	}

	/**
	 * 判断子集操作 判断setA中的每个元素是否也存在于setB中
	 */
	public static <T> boolean subset(Set<T> setA, Set<T> setB) {
		return intersection(setA, setB).size() == setA.size();
	}

	/********************************下面是有序集的操作********************************/
	
	/** 求交集 */
	public static <T extends Comparable<? super T>> TreeSet<T> orderedIntersection(
			Set<T> a, Set<T> b) {
		TreeSet<T> setIntersection = new TreeSet<T>();
		Iterator<T> iterA = a.iterator(),
					iterB = b.iterator();
		T valueA, valueB;
		
		valueA = advance(iterA);
		valueB = advance(iterB);
		while(valueA != null && valueB != null) {
			if(valueA.compareTo(valueB) < 0)
				valueA = advance(iterA);
			else if(valueB.compareTo(valueA) < 0)
				valueB = advance(iterB);
			else {
				setIntersection.add(valueA);
				valueA = advance(iterA);
				valueB = advance(iterB);
			}
		}
		return setIntersection;
	}
	
	private static <T> T advance(Iterator<T> iter) {
		T value = null;
		if (iter.hasNext())
			value = iter.next();
		return value;
	}
}
分享到:
评论
1 楼 nickevin 2009-06-24  
/** 求差集 */
public static <T> Set<T> difference(Set<T> setA, Set<T> setB) {
Set<T> setDifference;
T item;

if (setA instanceof TreeSet) {
setDifference = new TreeSet<T>();
} else {
setDifference = new HashSet<T>();
}

               // 判断一下集合的数量大小 再比较
if (setA.size() > setB.size()) {
Iterator<T> iterA = setA.iterator();
while (iterA.hasNext()) {
item = iterA.next();
if (!setB.contains(item)) {
setDifference.add(item);
}
}
} else {
Iterator<T> iterB = setB.iterator();
while (iterB.hasNext()) {
item = iterB.next();
if (!setA.contains(item)) {
setDifference.add(item);
}
}
}

return setDifference;
}

相关推荐

    JAVA 集合操作

    在Java编程中,集合操作是...以上知识点涵盖了Java集合操作的基础到高级主题。理解并熟练运用这些概念,能够帮助开发者编写出高效、健壮的Java程序。通过阅读指定的博文和实践相关代码,可以进一步巩固和提升这些技能。

    java 集合练习题

    Java集合框架是Java API的一部分,它提供了多种数据结构,如List、Set和Queue等,以及操作这些数据结构的方法。这些数据结构可以帮助我们有效地存储和管理数据。 2. **ArrayList与HashMap**: - **ArrayList**:...

    java集合思维导图

    Java集合框架是Java编程语言中的一个核心部分,它为数据存储和管理提供了高效且灵活的解决方案。本思维导图及总结旨在深入理解并掌握Java集合的相关概念和使用方法。 首先,我们来了解一下Java集合框架的基本构成。...

    java 集合

    本文将深入探讨Java集合框架的基础知识,包括接口、类、以及它们在实际开发中的应用。 首先,Java集合框架由一系列接口和实现这些接口的类组成。主要的接口有`List`、`Set`和`Queue`,它们各自代表了不同特性的数据...

    java泛型集合 java集合 集合 java Collection

    Java 泛型集合和Java集合框架是Java编程中不可或缺的部分,它们为开发者提供了高效的数据存储和操作机制。本文将深入探讨这两个主题,并着重讲解`Collection`接口及其在Java中的应用。 首先,Java泛型是一种在编译...

    Java集合思维导图.xmind.zip

    对于Java集合框架,思维导图可能包括各个集合类的层次结构、它们的主要方法、性能特点、操作示例等,以及不同版本之间的改进点。 这份压缩包中的思维导图可以作为学习和复习Java集合框架的辅助材料,帮助开发者系统...

    Java集合排序及java集合类详解.pdf

    ### Java集合排序及Java集合类详解 ...综上所述,Java集合框架为Java开发者提供了强大的工具来管理和操作数据集。了解和掌握这些集合类的基本特性和使用方法,对于编写高效、可靠的Java应用程序至关重要。

    Java集合排序及java集合类详解

    Java集合框架是Java编程语言中的一个核心组成部分,它为数据存储和操作提供了丰富的接口和类。在本篇中,我们将深入探讨Java集合的排序机制以及集合类的详细使用。 首先,我们来了解一下Java集合的基本分类。Java...

    Java集合 练习代码

    在学习和实践这些Java集合练习代码时,你不仅会掌握基本的集合操作,还会了解不同集合类型的选择依据,以及在实际场景中如何根据需求选择合适的集合。通过不断实践,你将能够熟练地运用Java集合框架解决各种数据处理...

    java 集合部分笔记

    Java集合框架是Java编程语言中用于存储和操作对象的工具,它提供了多种数据结构,如列表、集、映射等,以适应不同的数据处理需求。集合类通常位于`java.util`包下,是Java程序员必备的知识点。 1. **集合的概述** ...

    Java集合框架总结

    Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和操作数据。本文档将深入探讨Java集合框架的关键组成...

    java集合类详解(set list ArrayList等java集合类详述)

    Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、remove、contains 等。Collection 接口没有实现类,因此需要通过其子接口来实现。 Set 是一个不能包含重复元素的集合,SortedSet 是一个按照升序...

    Java集合详解,详细讲解java的集合类

    Java集合框架是Java编程语言中的核心部分,它提供了一种高效、灵活的方式来组织和操作对象的集合。在Java中,集合主要分为两大类:Collection和Map。本文将深入讲解Java集合类,特别是Collection接口和其下的List、...

    一个讲解很清晰的Java集合框架PPT

    Java集合框架是Java编程语言中不可或缺的一部分,它提供了一组接口和类,用于高效地存储、管理和操作数据。这个“一个讲解很清晰的Java集合框架PPT”显然是一个对外公开的教育资源,旨在帮助学习者深入理解Java集合...

    java集合框架的使用。集合的运算

    Java集合框架是Java编程语言中一个非常重要的组成部分,它为开发者提供了存储和操作对象的统一接口和类。这个框架使得处理各种数据结构变得更加方便和高效。在这个“java集合框架的使用”主题中,我们将深入探讨如何...

    深入Java集合学习系列

    Java集合框架是Java编程语言中的核心组件之一,它为存储、管理和操作对象提供了一套高效且灵活的工具。本系列深入讲解了Java集合框架中的重要组成部分,包括HashMap、ArrayList、LinkedHashMap、HashSet以及...

    java集合详解.pdf

    Java 集合框架是 Java 语言中用于存储和操作数据的框架。它提供了一种统一的方式来存储和操作不同类型的数据。集合框架包括 Collection、List、Set、Map 等接口,每个接口都有其特点和用途。 1.1.1 容器简介 容器...

    java集合知识大全

    ### Java集合知识大全 #### 一、集合概述 在Java编程语言中,集合是一组用于存储其他对象的对象。集合框架提供了多种数据结构,用于管理不同类型的数据。这些数据结构包括列表(List)、集(Set)、映射(Map)等,每种...

Global site tag (gtag.js) - Google Analytics