Java : AbstractSet 示例
Java 中的 AbstractSet (Java SE 23 & JDK 23) 及其示例。
您将找到大多数 AbstractSet<E> 方法的代码示例。
注解 :
- 本文可能使用了翻译软件以方便阅读。 另请查看英文原文。
简介
此类提供了 Set 接口的骨架实现,以最大限度地减少实现该接口所需的工作量。 (机器翻译)
class MySet extends AbstractSet<String> {
private final String[] elements;
MySet(String e1, String e2, String e3) {
if (Objects.equals(e1, e2) || Objects.equals(e1, e3) || Objects.equals(e2, e3)) {
throw new IllegalArgumentException("duplicate element");
}
elements = new String[]{e1, e2, e3};
}
@Override
public Iterator<String> iterator() {
return new Iterator<>() {
private int index;
@Override
public boolean hasNext() {
return elements.length != index;
}
@Override
public String next() {
final var value = elements[index];
index++;
return value;
}
};
}
@Override
public int size() {
return elements.length;
}
}
final var set = new MySet("aaa", "bbb", "ccc");
System.out.println(set); // [aaa, bbb, ccc]
System.out.println(set.size()); // 3
System.out.println("-- elements --");
for (final var element : set) {
System.out.println(element);
}
// Result
// ↓
//-- elements --
//aaa
//bbb
//ccc
Constructors
AbstractSet ()
唯一建造者。 (机器翻译)
class MySet extends AbstractSet<String> {
private final String[] elements;
MySet(String e1, String e2, String e3) {
if (Objects.equals(e1, e2) || Objects.equals(e1, e3) || Objects.equals(e2, e3)) {
throw new IllegalArgumentException("duplicate element");
}
elements = new String[]{e1, e2, e3};
}
@Override
public Iterator<String> iterator() {
return new Iterator<>() {
private int index;
@Override
public boolean hasNext() {
return elements.length != index;
}
@Override
public String next() {
final var value = elements[index];
index++;
return value;
}
};
}
@Override
public int size() {
return elements.length;
}
}
final var set = new MySet("aaa", "bbb", "ccc");
System.out.println(set); // [aaa, bbb, ccc]
System.out.println(set.size()); // 3
System.out.println("-- elements --");
for (final var element : set) {
System.out.println(element);
}
// Result
// ↓
//-- elements --
//aaa
//bbb
//ccc
Methods
boolean equals (Object o)
将指定对象与此集合进行比较以确定其是否相等。 (机器翻译)
final AbstractSet<String> set = new HashSet<>();
Collections.addAll(set, "a", "b", "c");
System.out.println(set); // [a, b, c]
System.out.println(set.equals(Set.of("a"))); // false
System.out.println(set.equals(Set.of("a", "b"))); // false
System.out.println(set.equals(Set.of("a", "b", "c"))); // true
System.out.println(set.equals(Set.of("c", "b", "a"))); // true
final AbstractSet<String> set = new HashSet<>();
Collections.addAll(set, "a", "b", "c");
System.out.println(set); // [a, b, c]
final Set<String> hashSet = new HashSet<>(set);
System.out.println(hashSet); // [a, b, c]
System.out.println(set.equals(hashSet)); // true
final Set<String> treeSet = new TreeSet<>(set);
System.out.println(treeSet); // [a, b, c]
System.out.println(set.equals(treeSet)); // true
final var list = new ArrayList<>(set);
System.out.println(list); // [a, b, c]
System.out.println(set.equals(list)); // false
int hashCode ()
返回此集合的哈希码值。 (机器翻译)
final AbstractSet<String> set1 = new HashSet<>();
Collections.addAll(set1, "a", "b", "c");
System.out.println(set1.hashCode()); // 294
final AbstractSet<Integer> set2 = new HashSet<>();
Collections.addAll(set2, 1, 2, 3);
System.out.println(set2.hashCode()); // 6
final AbstractSet<String> set1 = new LinkedHashSet<>();
set1.add("a");
set1.add("b");
set1.add("c");
System.out.println(set1); // [a, b, c]
System.out.println(set1.hashCode()); // 294
final AbstractSet<String> set2 = new LinkedHashSet<>();
set2.add("c");
set2.add("b");
set2.add("a");
System.out.println(set2); // [c, b, a]
System.out.println(set2.hashCode()); // 294
boolean removeAll (Collection<?> c)
从此集合中删除指定集合中包含的所有元素(可选操作)。 (机器翻译)
final var src = Set.of("a", "b", "c");
{
final AbstractSet<String> set = new HashSet<>(src);
System.out.println(set); // [a, b, c]
System.out.println(set.removeAll(Set.<String>of())); // false
System.out.println(set); // [a, b, c]
}
{
final AbstractSet<String> set = new HashSet<>(src);
System.out.println(set); // [a, b, c]
System.out.println(set.removeAll(Set.of("a"))); // true
System.out.println(set); // [b, c]
}
{
final AbstractSet<String> set = new HashSet<>(src);
System.out.println(set); // [a, b, c]
System.out.println(set.removeAll(Set.of("a", "b"))); // true
System.out.println(set); // [c]
}
{
final AbstractSet<String> set = new HashSet<>(src);
System.out.println(set); // [a, b, c]
System.out.println(set.removeAll(Set.of("b", "a"))); // true
System.out.println(set); // [c]
}
{
final AbstractSet<String> set = new HashSet<>(src);
System.out.println(set); // [a, b, c]
System.out.println(set.removeAll(Set.of("a", "b", "c"))); // true
System.out.println(set); // []
}
{
final AbstractSet<String> set = new HashSet<>(src);
System.out.println(set); // [a, b, c]
System.out.println(set.removeAll(Set.of("X", "Y"))); // false
System.out.println(set); // [a, b, c]
}
{
final AbstractSet<String> set = new HashSet<>(src);
System.out.println(set); // [a, b, c]
System.out.println(set.removeAll(Set.of("a", "X"))); // true
System.out.println(set); // [b, c]
}
Methods declared in AbstractCollection
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, toArray, toArray, toString
请参阅下面的链接。
Methods declared in Collection
Methods declared in Iterable
Methods declared in Set
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, spliterator, toArray, toArray
请参阅下面的链接。