Hashset 和 ListHashSet用法及特点

// HashSet 和 LinkedHashSet 用法及特点

/**

* 编写一个ArrayList集合 用Set去重

* 为了保证顺序 我们用LinkedHashSet

*/

public static void fun6() {

ArrayList aList = new ArrayList<>();

aList.add("b");

aList.add("a");

aList.add("a");

aList.add("b");

aList.add("c");

aList.add("c");

LinkedHashSet 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 hSet = new HashSet<>();

for (int i = 0; i < charArray.length; i++) {

hSet.add(charArray[i]);

}

System.out.println(hSet);

}

/**

* 编写一个 随机/不重复的 10个数的程序

* Set集合实现不重复

*/

public static void fun4() {

HashSet 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的去重的特点

*/

public static void fun3() {

LinkedHashSet 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 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 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);

}

}

TreeSet用法及特点

// 计数器

/**

* 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)

* 按照总分从高到低输出到控制台。

*/

public static void fun13() {

System.out.println("请输入姓名及成绩:");

Scanner scanner = new Scanner(System.in);

TreeSet 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 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 tSet = new TreeSet<>(new Compara2());

for (int i = 0; i < charArray.length; i++) {

tSet.add(charArray[i]);

}

System.out.println(tSet);

}

/**

* ArrayList存储无序并且重复的字符串, 要求排序 并且不能去除重复

*/

public static void fun10() {

ArrayList 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 tSet = new TreeSet<>(new compara1());

tSet.addAll(aList);

aList.clear();

aList.addAll(tSet);

System.out.println(aList);

}

/**

* 使用比较器 比较排序集合中的元素. 要求保留重复

* 重写比较器comparator接口 实现自己想要的比较方法

* 注意:要记着将comparator的实现类要创建在 集合中

*/

public static void fun9() {

TreeSet 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的返回值

* 返回0 只是一个值

* 返回正数 按存进顺序 正序

* 返回负数 按存进顺序 倒序

*

* TreeSet 内部使用 二叉树来存储的

* 核心:

* 比我小的数存在左边(返回负数时)

* 比我大的数存在右边(返回正数时)

* 不存储, 两个数相等(返回0时)

*

*/

public static void fun8() {

TreeSet 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);

}

/**

* TreeSet的特点: **排序**(去重)

*/

public static void fun7() {

TreeSet 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)方法添加已经存在的对象,则会覆盖前面的对象

为什么要使用集合类

当你事先不知道要存放数据的个数,或者你需要一种比数组下标存取机制更灵活的方法时,你就需要用到集合类。

java中set的特点_java -- Set 用法及特点相关推荐

  1. JAVA中的break[标签]continue[标签]用法

    原文:JAVA中的break[标签]continue[标签]用法 注意:JAVA中的标签必须放在循环之前,且中间不能有其他语句.例如:tag:for或while或do--while; 1.使用brea ...

  2. java中Collections.sort() 排序函数的用法

    java中Collections.sort() 排序函数的用法: 用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: /** ...

  3. 12 java中instanceof运算符的意义和用法

    java中instanceof运算符的意义和用法 instanceof运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来标识该对象是否为特定类或者它的子类的一 ...

  4. java中break什么意思_Java中break的第三种用法说明

    在Java中,break语句有三种用法,第一种是用于终止switch语句中的语句序列,第二种是用于退出循环,然而第三种是用作goto语句的"文明"形式! 我们知道,goto语句会破 ...

  5. java中final详解_Java中final用法与详解

    Java中final用法与详解 final作为Java中经常用到的关键字,了解final的使用方法是非常有必要的.这里从final关键字在数据域.方法和类中三个方面分析final关键字的主要用法. f ...

  6. java中输入的程序_Java中输入的用法

    Java中输入 1. 读取输入 1)构建一个Scanner,附属到System.in Scanner in = new Scanner(System.in); 此时可以使用Scanner类的各种方法来 ...

  7. java中tostring是什么_java中toString()方法有什么用法

    在java中toString() 方法用于返回以一个字符串表示的 Number 对象值. 如果该方法使用了原生的数据类型作为参数,返回原生数据类型的 String 对象值. 如果该方法有两个参数, 返 ...

  8. java中标签怎么用_Java中标签的使用

    很多程序设计语言中有goto语句,goto语句的使用,使的程序变得难以读懂,尽管goto仍是Java的一个保留字,但并未在语言中得到正式使用:Java没有goto.然而,在break和continue ...

  9. java中的string函数_java中string.trim()函数的作用实例及源码

    trim()的作用:去掉字符串首尾的空格. public static void main(String arg[]){ String a=" hello world "; Str ...

最新文章

  1. 什么?拼命栽培员工,让他强大到足以离开
  2. Tarjan 算法详解
  3. android广告页白屏_android 白屏
  4. SAP Commerce Cloud (电商云) UI 的懒加载功能
  5. 《深入理解java虚拟机》第1章 走近Java
  6. Linux报文硬件时间戳,linux下修改时间戳
  7. 给安利公司董事长郑李锦芬女士的一封信
  8. Silverlight5 RC调用Win32API
  9. 怎样成为一名优秀的运维工程师
  10. Android 科大讯飞、语音听写集成指南
  11. Windows下安装Redis图文教程
  12. ESP8266 ESP8089 ESP8285 用户手册文档汇总
  13. 如何测试硬盘软件,win10系统怎么用硬盘检测工具HDTune【图文】
  14. 解决linux(centos7)重新安装mysql systemctl start mysqld.service时报错
  15. poi创建数据透视表_从数据透视表创建自定义报告
  16. 服务器响应401,服务器返回的HTTP响应代码:401为URL:https
  17. gavin中文是什么意思_Gavin[加文,盖温]英文名的中文翻译意思、发音、来源及流行趋势-千代英文名...
  18. SX1308原厂芯片
  19. 【TAGE】分支预测
  20. Codeforces 1089K King Kog's Reception(线段树)

热门文章

  1. 大咖们如何评判优秀架构师?
  2. 网络基础之动态路由协议(OSPF)
  3. 网络基础之基于距离矢量的动态路由(RIP)
  4. bzoj 1415 [Noi2005]聪聪和可可
  5. 转 怎么回答“分布式架构”才能让面试官满意?
  6. 智能眼镜技术特点与挑战
  7. python爱好者社区 投稿_2018年Python爱好者社区历史文章合集(作者篇)
  8. 政务领域区块链的应用
  9. Unity脚本子线程修改UI的一种方式
  10. 解决mac Cornerston的Authentication provider raised an exception 更新失败问题