1 public classDemo1_Set {2

3 /*

4 * set集合无序、不可重复、无索引5 */

6 public static voidmain(String[] args) {7

8 //demo1();

9 HashSet hs = new HashSet<>();10 hs.add(new Student("張三",19));11 hs.add(new Student("張三",19));12 hs.add(new Student("李四",20));13 hs.add(new Student("李四",20));14 hs.add(new Student("李四",20));15 System.out.println(hs);16 /*

17 注意: 向集合中添加自定义类对象时,要想不添加重复的数据(如:同姓名、同年龄认为是同一个人),需要在自定义类中重写equals和hashCode方法18 执行结果如下:19 -----------------------20 執行了嗎21 執行了嗎22 執行了嗎23 執行了嗎24 [Student [name=李四, age=20], Student [name=張三, age=19]]25 --------------------------------26 @Override27 public boolean equals(Object arg0) {28 System.out.println("執行了嗎");29 Student s = (Student) arg0;30 return this.name.equals(s.name) && this.age == s.age;31 }32

33 @Override34 public int hashCode() {35 return 1;36 }37 */

38 }39

40 public static voiddemo1() {41 HashSet hs = new HashSet<>();42 boolean b1 = hs.add("a");43 boolean b2 = hs.add("a");44 boolean b3 = hs.add("c");45 boolean b4 = hs.add("d");46 boolean b5 = hs.add("e");47 boolean b6 = hs.add("f");48

49 System.out.println(b1); //true

50 System.out.println(b2); //false

51 System.out.println(hs); //[f, d, e, c, a]

52 for(String string : hs) {53 System.out.print(string); //fdeca Set集合类有实现toString的方法,所以打印对象时是打印的值

54 }55 }56

57 }58

59 --------------------------------------------------------------------------------

60

61 public class Student implements Comparable{62 privateString name;63 private intage;64

65 @Override66 publicString toString() {67 return "Student [name=" + name + ", age=" + age + "]";68 }69 /*

70 * @Override public boolean equals(Object arg0) { System.out.println("執行了嗎");71 * Student s = (Student) arg0; return this.name.equals(s.name) && this.age ==72 * s.age; }73 *74 *75 * @Override public int hashCode() { return 1; }76 */

77

78 public Student(String name, intage) {79 super();80 this.name =name;81 this.age =age;82 }83

84 @Override85 public inthashCode() {86 final int prime = 31;87 int result = 1;88 result = prime * result +age;89 result = prime * result + ((name == null) ? 0: name.hashCode());90 returnresult;91 }92

93 @Override94 public booleanequals(Object obj) {95 if (this ==obj)96 return true;97 if (obj == null)98 return false;99 if (getClass() !=obj.getClass())100 return false;101 Student other =(Student) obj;102 if (age !=other.age)103 return false;104 if (name == null) {105 if (other.name != null)106 return false;107 } else if (!name.equals(other.name))108 return false;109 return true;110 }111

112 publicString getName() {113 returnname;114 }115

116 public voidsetName(String name) {117 this.name =name;118 }119

120 public intgetAge() {121 returnage;122 }123

124 public void setAge(intage) {125 this.age =age;126 }127

128 /*

129 * 优先比较姓名的长度,其次比较姓名的内容,再比较年龄130 */

131 @Override132 public intcompareTo(Student arg0) {133 int length = this.name.length() -arg0.name.length();134 int num = length == 0 ? this.name.compareTo(arg0.name) : length;135 return num == 0 ? this.age -arg0.age : num;136 }137

138 /*

139 * 优先按照姓名排序,之后再按照年龄排序140 *141 * @Override public int compareTo(Student arg0) { int num =142 * this.name.compareTo(arg0.name); return num == 0 ? this.age - arg0.age : num;143 * }144 */

145

146 /*

147 * 优先按照年龄排序,之后再按照姓名排序148 *149 * @Override public int compareTo(Student arg0) { int num = this.age - arg0.age;150 * return num == 0 ? this.name.compareTo(arg0.name) : num; }151 */

152

153 }154

155 ------------------------------------------------------------------------

156

157 public classDemo2_Quchong {158

159 /*

160 * 需求:将一个集合中的重复元素去除掉161 * 分析:162 * 1.获取一个拥有重复元素的list集合163 * 2.将list集合中的元素添加到set集合中164 * 3.将list集合中的元素清除165 * 4.将获取到的set集合添加到清空了的list集合中166 *167 * LinkedHashSet 集合怎么存进去的就怎么取出来168 * TreeSet 集合是可以对存进去的集合进行排序,同样也可以保证集合中元素的唯一行169 */

170 public static voidmain(String[] args) {171 //* 1.获取一个拥有重复元素的list集合

172 ArrayList list = new ArrayList<>();173 list.add("a");174 list.add("a");175 list.add("b");176 list.add("b");177 list.add("b");178 list.add("c");179 list.add("c");180 list.add("c");181 list.add("c");182

183 //通过方法去除重复元素

184 getSingle(list);185

186 //打印list集合

187 System.out.println(list);188

189 }190

191 public static void getSingle(Listlist) {192

193 //2.将list集合中的元素添加到set集合中

194 LinkedHashSet lhs = new LinkedHashSet<>();195 lhs.addAll(list);196

197 //3.将list集合中的元素清除

198 list.clear();199

200 //4.将获取到的set集合添加到清空了的list集合中

201 list.addAll(lhs);202 }203

204 }205

206 ------------------------------------------------------------------

207

208 public classDemo3_Quchong {209

210 /*

211 * 需求:通过键盘输入一串字符,然后去除重复,输出不同的字符212 * 分析:213 * 1.提示输入一串字符214 * 2.将这一串字符转换成字符数组215 * 3.将字符数组存入set集合216 * 4.打印最终的结果217 */

218 public static voidmain(String[] args) {219 //1.提示输入一串字符

220 Scanner sc = newScanner(System.in);221 System.out.println("请输入一串字符:");222

223 //2.将这一串字符转换成字符数组

224 String line =sc.nextLine();225 char[] ch =line.toCharArray();226

227 //3.将字符数组存入set集合

228 HashSet hs = new HashSet<>();229 for(Character character : ch) {230 hs.add(character);231 }232

233 //4.打印最终的结果

234 System.out.println(hs);235

236 }237

238 }239

240 -------------------------------------------------------------------

241

242 public classDemo4_TreeSet {243

244 /*

245 * TreeSet 集合自动对集合进行排序,同样也能满足集合中元素的唯一性246 *247 * 当自定义对象没有实现Comparable方法的时候,新增对象的时候会报类型转换异常248 * 当compareTo方法返回值为 0 的时候,集合中只会有一个元素被存进去249 * 当compareTo方法返回值为正数的时候,怎么存就怎么取250 * 当compareTo方法返回值为负数的时候,取的时候会倒序去值251 */

252 public static voidmain(String[] args) {253 //demo1();254 //demo2();255 //demo3();

256 TreeSet ts = new TreeSet<>(newCompareByLen());257 ts.add("aaaaaaaa");258 ts.add("b");259 ts.add("cc");260 ts.add("avb");261 ts.add("nba");262 System.out.println(ts);263 }264

265 public static voiddemo3() {266 TreeSet ts = new TreeSet<>();267 ts.add(new Student("zhangsan", 23));268 ts.add(new Student("lisi", 33));269 ts.add(new Student("zhaoliu", 43));270 ts.add(new Student("wangwu", 13));271 ts.add(new Student("aaaa", 13));272 System.out.println(ts);273 }274

275 public static voiddemo2() {276 TreeSet ts = new TreeSet<>();277 ts.add(new Student("张三",23));278 ts.add(new Student("王五",22));279 ts.add(new Student("赵五",22));280 ts.add(new Student("李四",25));281 ts.add(new Student("赵六",20));282 System.out.println(ts);283 }284

285 public static voiddemo1() {286 TreeSet ts = new TreeSet<>();287 ts.add("c");288 ts.add("a");289 ts.add("b");290 ts.add("a");291 ts.add("b");292 ts.add("b");293 ts.add("a");294

295 System.out.println(ts); //[a, b, c]

296 }297

298 }299

300 class CompareByLen implements Comparator{301

302 @Override303 public intcompare(String s1, String s2) {304 int num = s1.length() -s2.length();305 return num == 0 ?s1.compareTo(s2) : num;306 }307

308 }

java定义静态set集合_java集合之set相关推荐

  1. java集合替换集合_Java集合–您必须知道的13件事

    java集合替换集合 Java Collections Framework is one of the core parts of the Java programming language. Col ...

  2. java 中list类型未知_Java集合-List

    Java Collection 在 Java2中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操作成批的数据或对象元素极为方便.这些接口和类有很多对抽象数据类型操作的A ...

  3. java——定义一个功能将ArrayList 集合中的重复元素删除(java集合七)

    定义一个功能将ArrayList 集合中的重复元素删除 ArrayList 集合中是允许储存重复元素的 import java.util.ArrayList; import java.util.Ite ...

  4. 集合_java集合框架

    java集合框架图 简化图: Java平台提供了一个全新的集合框架."集合框架"主要由一组用来操作对象的接口组成. 不同接口描述一组不同数据类型.      1.Java 2集合框 ...

  5. java定义接口的方法_java定义接口的方法

    java定义接口的方法 发布时间:2020-06-28 13:50:49 来源:亿速云 阅读:103 作者:Leah 本篇文章为大家展示了java定义接口的方法,代码简明扼要并且容易理解,绝对能使你眼 ...

  6. java集合类继承关系图_java集合继承关系图

    面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 数组虽然也可以存储对象,但长度是固定的:集合长度是可变的,数组中可以存储基 ...

  7. java队列转集合_Java集合 使用Queue

    队列(Queue)是一种经常使用的集合.Queue实际上是实现了一个先进先出(FIFO:First In First Out)的有序表.它和List的区别在于,List可以在任意位置添加和删除元素,而 ...

  8. java 泛型和集合_Java集合和泛型

    集合 常用的集合有ArrayList,TreeSet,HashMap,HashSet. ArrayList 最常用的集合,每次插入都在后面追加元素. TreeSet 以有序状态保持并可防止重复.当你需 ...

  9. java大作业斗地主游戏_Java集合练习:斗地主游戏

    这是一个模拟斗地主的小游戏,最后看到的牌型是经过排序的,具体代码和解释如下: package cn.poker_test; import java.util.ArrayList; import jav ...

最新文章

  1. 【CTF】实验吧 围在栅栏中的爱
  2. R语言使用psych包的fa函数对指定数据集进行因子分析(输入数据为相关性矩阵)、使用rotate参数指定进行斜交旋转提取因子、使用nfactors参数指定抽取的因子个数、fa函数因子分析结果解读
  3. .. 相对目录php,php 计算两个目录的相对路径
  4. 设置程序默认打开方式
  5. OAF_OAF增删改-新增的实现(案例)
  6. centos7 重置root 密码
  7. MySQL字符串转日期
  8. sql中替换逗号为换行符_使用T-SQL将逗号或其他定界符转换为SQL Server中的表或列表
  9. document.body和document.documentElement的区别
  10. Linux网络属性配置—修改配置文件
  11. 几何实体图形保存成stl格式的ascII和二进制文。用Vc++语言读入文件,给三角网格坐标值乘以2,并保存到另一stl文件。输出完成工作所用的执行时间
  12. 栈和队列的一些相同点和不同点
  13. Air202掉坑日记(1)——烧录固件(AT版本)
  14. Unity Shader 实现PS图层混合效果
  15. Android悬浮窗的简单实现
  16. 整理了100个Python精选库,建议收藏
  17. Process finished with exit code 1Class not found:
  18. 本科毕业平均年薪 30 万!经济寒冬挡不住 AI 人才的火热!
  19. 关于我,一个简单低调的程序员
  20. 【精】【PDF链接转图片】- Java用pdfbox将PDF的URL转换并压缩成图片,解决“口口口”乱码问题

热门文章

  1. Apache服务器部署ASP.NET网站
  2. php中的var_dump()方法的详细说明
  3. Java总结篇系列:Java泛型
  4. mysql中利用sql语句修改字段名称,字段长度等操作(亲测)
  5. mysql高并发下主键冲突
  6. django写原生sql语句
  7. MySQL基础教程之IN的用法详解
  8. RabbitMQ安装及PHP扩展安装(最后的代码可以测试连接是否成功)
  9. 反思成长:强压得以透彻
  10. PHP完整的一次请求过程:请求 dns nginx监听 转发给php-fpm worker处理 返给nginx