java set相减操作_Java中的Set操作

首先看一个例子:

Set operations: union(并集), intersection(交集),asymetric difference(非对称差集), symmetric difference(对称差集), is subset(子集), is superset(超集)

import java.util.Set;

import java.util.TreeSet;

public class SetTest {

public static Set union(Set setA, Set setB) {

Set tmp = new TreeSet(setA);

tmp.addAll(setB);

return tmp;

}

public static Set intersection(Set setA, Set setB) {

Set tmp = new TreeSet();

for (T x : setA)

if (setB.contains(x))

tmp.add(x);

return tmp;

}

public static Set intersection2(Set setA, Set setB) {

Set tmp = new TreeSet(setA);

tmp.retainAll(setB);

return tmp;

}

public static Set difference(Set setA, Set setB) {

Set tmp = new TreeSet(setA);

tmp.removeAll(setB);

return tmp;

}

public static Set symDifference(Set setA, Set setB) {

Set tmpA;

Set tmpB;

tmpA = union(setA, setB);

tmpB = intersection(setA, setB);

return difference(tmpA, tmpB);

}

public static boolean isSubset(Set setA, Set setB) {

return setB.containsAll(setA);

}

public static boolean isSuperset(Set setA, Set setB) {

return setA.containsAll(setB);

}

public static void main(String args[]) {

TreeSet set1 = new TreeSet();

TreeSet set2 = new TreeSet();

set1.add('A');

set1.add('B');

set1.add('C');

set1.add('D');

set2.add('C');

set2.add('D');

set2.add('E');

set2.add('F');

System.out.println("set1: " + set1);

System.out.println("set2: " + set2);

System.out.println("Union: " + union(set1, set2));

System.out.println("Intersection: " + intersection(set1, set2));

System.out.println("Intersection2: " + intersection2(set1, set2));

System.out.println("Difference (set1 - set2): " + difference(set1, set2));

System.out.println("Symmetric Difference: " + symDifference(set1, set2));

TreeSet set3 = new TreeSet(set1);

set3.remove('D');

System.out.println("set3: " + set3);

System.out.println("Is set1 a subset of set2? " + isSubset(set1, set3));

System.out.println("Is set1 a superset of set2? " + isSuperset(set1, set3));

System.out.println("Is set3 a subset of set1? " + isSubset(set3, set1));

System.out.println("Is set3 a superset of set1? " + isSuperset(set3, set1));

}

}

这里很重要的是,一些集合操作会修改原始集合,比如addAll,retainAll,removeAll。尤其是你要重复操作原始集合的时候,一定要新建一个集合,new

TreeSet

(

orginalSet

)。

参考:

http://www.java2s.com/Code/Java/Collections-Data-Structure/Set.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Java计算日期之间的差异,可以使用Java 8引入的日期时间API。以下是计算两个日期之间天数差异的示例代码: ```java import java.time.LocalDate; import java.time.temporal.ChronoUnit; public class DateDifferenceExample { public static void main(String[] args) { LocalDate date1 = LocalDate.of(2022, 2, 15); LocalDate date2 = LocalDate.of(2022, 3, 1); long daysBetween = ChronoUnit.DAYS.between(date1, date2); System.out.println("Days between: " + daysBetween); } } ``` 在此示例,我们使用`LocalDate`类创建两个日期对象,并使用`ChronoUnit`类的`DAYS`常量计算两个日期之间的天数差异。最后,我们打印出天数差异。 ### 回答2: 要实现Java日期的功能,我们可以使用Java提供的Date类和Calendar类来实现。以下是一个简单的示例代码: ```java import java.util.Date; import java.util.Calendar; public class DateSubtractionExample { public static void main(String[] args) { // 获取当前日期 Date currentDate = new Date(); // 创建一个Calendar实例,并将当前日期设置为其时间 Calendar calendar = Calendar.getInstance(); calendar.setTime(currentDate); // 在当前日期基础上去指定的天数 int numberOfDaysToSubtract = 7; calendar.add(Calendar.DAY_OF_MONTH, -numberOfDaysToSubtract); // 获取计算后的日期 Date subtractedDate = calendar.getTime(); // 打印结果 System.out.println("当前日期: " + currentDate); System.out.println("去" + numberOfDaysToSubtract + "天后的日期: " + subtractedDate); } } ``` 在这个例子,我们首先使用Date类获取当前日期,并将其转换为Calendar实例。然后,我们使用Calendar类的add方法将当前日期去指定的天数。最后,我们使用getTime方法将计算后的日期转换回Date对象,并将结果打印出来。 请注意,这个例子假设输入的日期都是合法的。如果要对用户输入的日期进行验证,还需要进行应的输入验证处理。 ### 回答3: Java日期可以使用`java.time`包的`LocalDate`类进行操作。下面是一个例子: ``` import java.time.LocalDate; import java.time.temporal.ChronoUnit; public class DateSubtraction { public static void main(String[] args) { // 创建两个日期 LocalDate date1 = LocalDate.of(2021, 1, 1); LocalDate date2 = LocalDate.of(2021, 2, 1); // 计算日期差天数 long days = ChronoUnit.DAYS.between(date1, date2); // 输出结果 System.out.println("日期差天数:" + days); } } ``` 上面的代码,首先使用`LocalDate.of`方法创建了两个日期对象`date1`和`date2`,分别代表了2021年1月1日和2021年2月1日。然后,使用`ChronoUnit.DAYS.between`方法计算了这两个日期差的天数。最后,通过输出语句打印了结果。 运行上面的代码,输出结果将是: ``` 日期差天数:31 ``` 这表示2021年1月1日和2021年2月1日差了31天。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值