演示HashSet和TreeSet集合特点

演示HashSet集合特点:无序不可重复

package Collection;

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

/*
HashSet集合:
      无序不可重复
  1.存储时顺序和取出时的顺序不同
  2.不可重复
  3.放到HashSet集合中的元素实际上是放到HashMap集合的key部分了。
 */
public class HashSetTest {
    public static void main(String[] args) {
        Set<String > myset=new HashSet();
        myset.add("脆脆鲨1");
        myset.add("脆脆鲨1");
        myset.add("脆脆鲨2");
        myset.add("脆脆鲨9");
        myset.add("脆脆鲨1");
        myset.add("脆脆鲨6");
        myset.add("脆脆鲨2");
        myset.add("脆脆鲨2");
        //遍历
        for (String srt:myset) {
            System.out.println(srt);

        }

    }
}

在这里插入图片描述
演示TreeSet集合的特点:无序不可重复,但是存储的元素会自动按照大小顺序排序输出

package Collection;

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

/*
TreeSet集合:无序不可重复,但存储的元素输出会自动按照大小排序
           称为:可排序集合
     无序:这里的无序指的是存进去的顺序和取出的顺序不同,并且没有下标
 */
public class TreeSetTest {
    public static void main(String[] args) {
        Set<String> myset=new TreeSet<>();
        myset.add("小熊妮6");
        myset.add("小熊妮2");
        myset.add("小熊妮1");
        myset.add("小熊妮8");
        myset.add("小熊妮8");
        myset.add("小熊妮1");
        for(String str:myset){
            System.out.println(str);
        }
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,根据您的要求,我来给您提供一份相应的 Java 代码。请注意,为了让代码能够正常运行,您需要在 Point3d 类中实现 equals() 和 hashCode() 方法。同时,由于我无法获取您的完整代码,以下代码仅供参考,您可能需要对其进行适当修改才能让其在您的项目中运行。 ```java import java.util.HashSet; import java.util.Iterator; import java.util.Random; import java.util.Set; import java.util.TreeSet; public class Main { public static void main(String[] args) { // 创建 HashSet 集合对象 Set<Point3d> hashSet = new HashSet<>(); // 循环添加随机点 Random random = new Random(); for (int i = 0; i < 1000; i++) { int x = random.nextInt(5); int y = random.nextInt(5); int z = random.nextInt(5); Point3d point = new Point3d(x, y, z); hashSet.add(point); } // 显示集合的维度和是否包含指定点 System.out.println("Hash Set Dimension: " + hashSet.size()); Point3d targetPoint = new Point3d(0, 0, 0); System.out.println("Hash Set Contains Target Point: " + hashSet.contains(targetPoint)); // 使用 Iterator 遍历集合 Iterator<Point3d> iterator = hashSet.iterator(); System.out.println("Hash Set Elements:"); while (iterator.hasNext()) { System.out.println(iterator.next()); } // 创建 TreeSet 集合对象 Set<Point3d> treeSet = new TreeSet<>(hashSet); // 显示集合的维度 System.out.println("Tree Set Dimension: " + treeSet.size()); // 使用 Iterator 遍历集合 iterator = treeSet.iterator(); System.out.println("Tree Set Elements:"); while (iterator.hasNext()) { System.out.println(iterator.next()); } // 删除三个坐标都匹配的所有点 removePoints(treeSet); } public static void removePoints(Set<Point3d> set) { Set<Point3d> toRemove = new HashSet<>(); for (Point3d point : set) { if (point.x == point.y && point.y == point.z) { toRemove.add(point); } } set.removeAll(toRemove); } } class Point3d implements Comparable<Point3d> { int x; int y; int z; public Point3d(int x, int y, int z) { this.x = x; this.y = y; this.z = z; } @Override public boolean equals(Object obj) { if (obj instanceof Point3d) { Point3d other = (Point3d) obj; return this.x == other.x && this.y == other.y && this.z == other.z; } return false; } @Override public int hashCode() { int result = 17; result = 31 * result + x; result = 31 * result + y; result = 31 * result + z; return result; } @Override public int compareTo(Point3d other) { double distance1 = Math.sqrt(x * x + y * y + z * z); double distance2 = Math.sqrt(other.x * other.x + other.y * other.y + other.z * other.z); return Double.compare(distance1, distance2); } @Override public String toString() { return "(" + x + ", " + y + ", " + z + ")"; } } ``` 在以上代码中,我们首先创建了一个 HashSet 集合对象,并循环添加了 1000 个随机点。然后,我们使用 size() 方法和 contains() 方法分别显示了集合的维度和是否包含指定点。接着,我们使用 Iterator 遍历了集合,并将其中的元素输出到控制台。 接下来,我们使用 TreeSet 构造函数创建了一个 TreeSet 集合对象,并将 HashSet 集合对象作为参数传递给它。这样做可以将 HashSet 中的元素自动按照指定的比较规则排序,并将排序后的元素添加到 TreeSet 中。我们同样使用 size() 方法和 Iterator 遍历了 TreeSet 集合,并将其中的元素输出到控制台。 最后,我们编写了一个名为 removePoints() 的方法,该方法接受一个点集合作为参数,并删除其中三个坐标都匹配的所有点。我们使用 HashSet 集合来存储需要删除的点,然后使用 removeAll() 方法从原集合中删除这些点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小心!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值