Set<String> ans = new HashSet<>();
Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。
new HashSet<>()
其中的hashset类实现了set接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。
HashSet 类提供很多有用的方法,添加元素可以使用 add() 方法:
例如:HashSet<String> sites = new HashSet<String>(); sites.add("Google");
结果:[Google]
计算 HashSet 中的元素数量可以使用 size() 方法:
HashSet<String> sites = new HashSet<String>();
System.out.println(sites.size());
其中<>中的内容可以是String、Boolean、Byte、Short、Integer、Long、Float、Double、Character
具体实例:
import java.util.*;
public class Main {
static int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
public static void main(String[] args) {
Set<Integer> set = new HashSet<>();
Set<String> ans = new HashSet<>();
int x = 19, y = 20;
for (int i = 0; i <= x; i++) {
for (int j = 0; j <= y; j++) {
set.add(i * 100 + j);
}
}
List<Integer> arr = new ArrayList<>(set);
int len = arr.size();
for (int i = 0; i < len; i++) {
int a = arr.get(i);
for (int j = i + 1; j < len; j++) {
int b = arr.get(j);
int x1 = a / 100, x2 = b / 100, y1 = a % 100, y2 = b % 100;
int up = y1 - y2, down = x1 - x2;
int c1 = gcd(up, down);
String K = (up / c1) + " " + (down / c1);
if (down == 0) {
ans.add("x = " + x1);
continue;
}
int kx = up * x1, Y = y1 * down;
int kb = Y - kx;
int c2 = gcd(kb, down);
String B = (kb / c2) + " " + (down / c2);
ans.add(K + " " + B);
}
}
System.out.println(ans.size());
}
}