分类专栏: java学习

 
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

Hashset 和 ListHashSet用法及特点

//  HashSet 和 LinkedHashSet 用法及特点
/**
* 编写一个ArrayList集合 用Set去重
* 为了保证顺序 我们用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[i]);
}
System.out.println(hSet);
} /**
* 编写一个 随机/不重复的 10个数的程序
* Set集合实现不重复
*/
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的去重的特点
*/
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);
}
}

TreeSet用法及特点

//  计数器
/**
* 键盘录入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[i]);
}
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的返回值
* 返回0 只是一个值
* 返回正数 按存进顺序 正序
* 返回负数 按存进顺序 倒序
*
* TreeSet 内部使用 二叉树来存储的
* 核心:
* 比我小的数存在左边(返回负数时)
* 比我大的数存在右边(返回正数时)
* 不存储, 两个数相等(返回0时)
*
*/
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);
} /**
* TreeSet的特点: **排序**(去重)
*/
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)方法添加已经存在的对象,则会覆盖前面的对象
为什么要使用集合类
当你事先不知道要存放数据的个数,或者你需要一种比数组下标存取机制更灵活的方法时,你就需要用到集合类。

最新文章

  1. C#进程操作
  2. Solr与HBase架构设计
  3. 使用OneNote的COM组件,实现OCR功能。
  4. WAF与IPS的区别总结
  5. Postfix Completion 的使用
  6. python2.7爬取豆瓣电影top250并写入到TXT,Excel,MySQL数据库
  7. javaScript在私有的属性和方法
  8. C#发送邮件三种方法(Localhost,SMTP,SSL-SMTP)
  9. Java和C++的对比
  10. 2110 ACM Crisis of HDU 母函数
  11. csharp:FTP Client Library using FtpWebRequest or Sockets
  12. Ckeditor一种很方便的文本编辑器
  13. python基础之正则表达式 re模块
  14. Liunx 部署环境常用命令
  15. Creating a Physical Standby Database 11g
  16. EasyUI 列表展示及基本格式
  17. Zabbix监控PV和UV
  18. urllib库基本使用
  19. 购物车中的input输入框只能输入数字和输入为0的时候默认为1
  20. 关于UbuntuMate的两个问题点:SSH问题处理与自启动项配置

热门文章

  1. JAVA中为什么要配置环境变量?怎么配置环境变量?
  2. Django之 数据库ORM
  3. Ubuntu18.04.2下安装 RTX2080 Nvidia显卡驱动
  4. C语言的常量
  5. 习题6-2 使用函数求特殊a串数列和
  6. SQLAlchemy 应用创建
  7. 201971010131-张兴盼《面向对象程序设计(java)》第十二周学习总结
  8. Appium+python自动化(三)- SDK Manager(超详解)
  9. web框架--XSS攻击和CSRF请求伪造
  10. pycharm配置mysql数据库连接访问