初始化方法: Set<String> testSet = new HashSet<String>(); testSet.add("Java"); 或 Set<String> testSet = new HashSet<String>(){{ add("morning"); add("afternoon"); }} 其他常用方法: add(E e) :如果 Set 集合中不存在指定元素,则增加此元素。 addAll(collection c) :如果 Set 集合中没有指定 collection 中的所有元素,则增加。 clear() :移除 Set 中的所有元素。 contains(object o) :如果 Set 集合中包含指定元素,则返回 true 。 containsAll(collection c) :如果 Set 集合中包含 collection 中的所有元素,返回 true 。 equals(object o) :判断指定对象与此 Set 集合是否相等。 hashCode() :返回此 Set 的哈希码值。 isEmpty() :判断 Set 集合是否为空,为空返回 true 。 iterator() :返回在此 Set 的元素上进行迭代的迭代器。 remove(object o) :移除 Set 集合中的指定元素。 removeAll(collection c) :移除 Set 中包含在 collection 中的元素。 retainAll(collection c) :仅保留 Set 中包含在 collection 中的元素。 size() :返回 Set 集合中的元素的个数。 toArray() :返回一个包含 Set 中所有元素的数组。 Set 集合与 List 集合的区别就是, Set 集合的元素不能重复, List 集合的元素是可以重复的。 // HashSet 和 LinkedHashSet 用法及特点 /** * 为了保证顺序 我们用 LinkedHashSet */ public static void fun6() { ArrayList<String> aList = new ArrayList<>(); aList.add("b"); aList.add("a"); aList.add("a"); aList.add("b"); aList.add("c"); aList.add("c"); LinkedHashSet<String> hSet = new LinkedHashSet<>(); hSet.addAll(aList); aList.clear(); aList.addAll(hSet); System.out.println(aList); }/** * 编写一个 从键盘键入一连串字符串 , 将重复的字符串去掉 , 打印出不通过的字符 */ public static void fun5() { System.out.println(" 请输入一连串字符 : "); Scanner scanner = new Scanner(System.in); String s1 = scanner.nextLine(); char[] charArray = s1.toCharArray(); HashSet<Character> hSet = new HashSet<>(); for (int i = 0; i < charArray.length; i++) { hSet.add(charArray); } System.out.println(hSet); }/** */ public static void fun4() { HashSet<Integer> hSet = new HashSet<>(); while (hSet.size() < 10) { int i1 = (int)(Math.random() * (20 - 1 + 1) - 1); hSet.add(i1); } System.out.println(hSet); }/** * LinkedHashSet 特点 : 有序的 ( 怎么存的可以怎么取出来 ) */ set是一个无序集合,方法很多, set 只允许添加同一类型的数据,这个在使用 add(), 和 addAll() 的时候只需要注意集合是否已经有值,即将加入的值是否跟当前里面的值是否是同一外汇返佣 http://www.kaifx.cn/ 通过测试我们发现,使用 clear()之前我们 map 中的值一直存在;使用之后,不仅清除了 set 中的数据,我们 map 中的数据一起被清除;但是 map 对象依然存在,我们可以重新加入新类型的数据; 测试代码 public static void main(String[] args) { Map map = new HashMap(); map.put("a", 1); map.put("b", 2); map.put("c", 3); Set set = map.keySet(); System.out.println(set); set = map.entrySet(); System.out.println("map---前 " + map); System.out.println("set---前 " + set); // 使用 clear set.clear(); System.out.println("map---后 " + map); System.out.println("set---后 "+set); // 加入新类型(字符串)的数据 System.out.println("map---重新加入 " + map); } 测试结果 [a, b, c] public static void fun3() { LinkedHashSet<String> lSet = new LinkedHashSet<>(); lSet.add("c"); lSet.add("a"); lSet.add("a"); lSet.add("c"); lSet.add("b"); lSet.add("b"); lSet.add("d"); lSet.add("d"); for (String string : lSet) { System.out.println(string); } }/** * 去除对象 --- 需要重写 HashCode() 和 equals() */public static void fun2() { HashSet<Person> hSet = new HashSet<>(); hSet.add(new Person("科比 " , 18)); hSet.add(new Person("加索尔 " , 19)); hSet.add(new Person("费舍尔 " , 20)); hSet.add(new Person("拜纳姆 " , 21)); hSet.add(new Person("奥多姆 " , 22)); hSet.add(new Person("奥多姆 " , 22)); hSet.add(new Person("科比 " , 18)); hSet.add(new Person("加索尔 " , 19)); hSet.add(new Person("费舍尔 " , 20)); hSet.add(new Person("拜纳姆 " , 21)); for (Person personCopy : hSet) { System.out.println(personCopy); } }/** * Set接口特点 : 无下标 无顺序 ** 无重复 ** */ public static void fun1() { HashSet<String> hSet = new HashSet<>(); hSet.add("c"); hSet.add("a"); hSet.add("a"); hSet.add("c"); hSet.add("b"); hSet.add("b"); hSet.add("d"); hSet.add("d"); for (String string : hSet) { System.out.println(string); } } /** * 键盘录入 5 个学生信息 ( 姓名 , 语文成绩 , 数学成绩 , 英语成绩 ) */ public static void fun13() { System.out.println("请输入姓名及成绩 :"); Scanner scanner = new Scanner(System.in); TreeSet<Clases1> tSet = new TreeSet<>(); while(tSet.size() < 5) { String s1 = scanner.nextLine(); String[] split = s1.split(","); int parseInt = Integer.parseInt(split[1]); int parseInt2 = Integer.parseInt(split[2]); int parseInt3 = Integer.parseInt(split[3]); int num = parseInt + parseInt2 + parseInt3; tSet.add(new Clases1(split[0], parseInt, parseInt2, parseInt3, num)); } System.out.print(tSet); }/** * 程序启动后 , 可以从键盘输入接收多个整数 , 直到输入 quit 时结束输入 . */ public static void fun12() { System.out.println("请输入一个字符串 "); Scanner scanner = new Scanner(System.in); TreeSet<Integer> tSet = new TreeSet<>(new Compara3()); while(true) { String s1 = scanner.nextLine(); if (s1.equals("quit")) { break; } int parseInt = Integer.parseInt(s1); tSet.add(parseInt); } System.out.println(tSet); }/** * 键盘接受一个字符串 程序对其中所有字符进行排序 */ public static void fun11() { System.out.println("请输入一串字符串 : "); Scanner scanner = new Scanner(System.in); String s1 = scanner.nextLine(); char[] charArray = s1.toCharArray(); TreeSet<Character> tSet = new TreeSet<>(new Compara2()); for (int i = 0; i < charArray.length; i++) { tSet.add(charArray); } System.out.println(tSet); }/** * ArrayList存储无序并且重复的字符串 , 要求排序 并且不能去除重复 */ public static void fun10() { ArrayList<String> aList = new ArrayList<>(); aList.add("aaa"); aList.add("asd"); aList.add("ww"); aList.add("zz"); aList.add("CC"); aList.add("a"); aList.add("bcd"); aList.add("aaa"); TreeSet<String> tSet = new TreeSet<>(new compara1()); tSet.addAll(aList); aList.clear(); aList.addAll(tSet); System.out.println(aList); }/** * 使用比较器 比较排序集合中的元素 . 要求保留重复 * 重写比较器 comparator<T> 接口 实现自己想要的比较方法 * 注意 : 要记着将 comparator 的实现类要创建在 集合中 */ public static void fun9() { TreeSet<String> tSet = new TreeSet<>(new compara1()); tSet.add("aaa"); tSet.add("asd"); tSet.add("ww"); tSet.add("zz"); tSet.add("CC"); tSet.add("a"); tSet.add("bcd"); tSet.add("aaa"); System.out.println(tSet); }/** * TreeSet存储类对象 , 进行排序 要在创建对象的类中重写 compareTo 方法 * TreeSet存储的是类对象 , 就要看 compareTo 的返回值 * * */ public static void fun8() { TreeSet<Man> tSet = new TreeSet<>(); tSet.add(new Man("科比 ", 19)); tSet.add(new Man("乔丹 ", 20)); tSet.add(new Man("库里 ", 21)); tSet.add(new Man("格林 ", 18)); tSet.add(new Man("书豪 ", 19)); tSet.add(new Man("书豪 ", 200)); System.out.println(tSet); }/** */ public static void fun7() { TreeSet<Integer> tSet = new TreeSet<>(); tSet.add(5); tSet.add(4); tSet.add(1); tSet.add(2); tSet.add(3); tSet.add(5); tSet.add(5); for (Integer integer : tSet) { System.out.println(integer); } } Set中的元素是不能重复的,如果使用 add(Object obj) 方法添加已经存在的对象,则会覆盖前面的对象 当你事先不知道要存放数据的个数,或者你需要一种比数组下标存取机制更灵活的方法时,你就需要用到集合类。 |