分享内容:关于集合的使用

  书页号码:77页

题目:一个字符串中包含a~z中的多个字符,如有重复,如String data = "aavzcadfdsfsdhshgwasdfasdfddaaa",求出现次数最多的那个字母及次数,如有多个重复的则都求出。

 import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.TreeSet; public class test { public static void main(String[] args) {
String input = "aavzcadfdsfsdhshgwasdfasdfddaaa";
new test().doString(input);
} public void doString(String input){
char[] chars = input.toCharArray();
ArrayList<String> lists = new ArrayList<String>(); // 第一步:先将数组传入到TreeSet,通过这个集合自动过滤掉重复的字母,并且该集合会自动排序。
TreeSet<String> set = new TreeSet<String>();
for(int i=0;i<chars.length;i++){
lists.add(String.valueOf(chars[i]));
set.add(String.valueOf(chars[i]));
} System.out.println(set);//输出:[a, c, d, f, g, h, s, v, w, z]
Collections.sort(lists);// 第二步:使用ArrayList 进行快速排序
System.out.println(lists);//输出:[a, a, a, a, a, a, a, a, c, d, d, d, d, d, d, d, f, f, f, f, g, h, h, s, s, s, s, s, v, w, z] StringBuffer sb = new StringBuffer();
for(int i=0;i<lists.size();i++){
sb.append(lists.get(i));
} input = sb.toString();
System.out.println(input);//输出:aaaaaaaacdddddddffffghhsssssvwz
int max = 0;
String maxString = "";
ArrayList<String> maxList = new ArrayList<String>(); Iterator its = set.iterator();
while(its.hasNext()){
String os = (String) its.next();
int begin = input.indexOf(os);
int end = input.lastIndexOf(os);// 第三步:使用indexOf 和 lastIndexOf 来求出最大值。
int value = end - begin +1;
if(value>max){
max = value;
maxString = os;
maxList.add(os);
}else if(value==max){
maxList.add(os);
}
} System.out.println("maxString:"+maxString);//输出:maxString:a
System.out.println("maxList:"+maxList);//输出:maxList:[a] int index = 0;
for(int i=0;i<maxList.size();i++){
if(maxList.get(i).equals(maxString)){
index = i;
break;
}
} System.out.print("max data:");//输出:max data:a
for(int i=index;i<maxList.size();i++){
System.out.println(maxList.get(i)+" ");
} System.out.println();
System.out.println("max:"+max);//输出:max:8 } }

分享这个例子的原因是这个里面包含一些集合(TreeSet、ArrayList、indexOf、lastIndexOf)例子的使用,感觉比较经典因此就分享出来了,当然这篇文章我还想分享一些关于递归方面例子,但是感觉我对递归的了解还是比较肤浅,等我抽个时间研究后,再出来分享一下。

本篇未完待续........

最新文章

  1. 使用Astah制作UML时序图
  2. webapp开发中的一些注意的
  3. Delphi 中记录类型 给记录指针赋值。
  4. centos修改hostname以及时间同步
  5. Linux之Ganglia源码安装
  6. 完全用LINUX工作
  7. Leetcode 解题 Add Two Numbers Python
  8. C# QRCode、DataMatrix和其他条形码的生成和解码软件
  9. jQuery 树形结构
  10. 验证docker的Redis镜像也存在未授权访问漏洞
  11. Recover a file when you use git reset head by mistake.
  12. MEMO:UIButton 中的图片和标题 左对齐
  13. C++外观设计模式模式(三)
  14. python查询完结篇
  15. S0.3 直方图
  16. JavaScript基础视频教程总结(071-080章)
  17. IntelliJ IDEA中Debug的使用技巧
  18. Linux系统磁盘满解决方案
  19. Confluence 6 为 Active Directory 配置一个 SSL 连接预要求
  20. Android中对文件的读写进行操作

热门文章

  1. MySQL 日志系统之 redo log 和 binlog
  2. halcon学习方法小结及以后的学习计划
  3. 算法问题实战策略 QUADTREE
  4. 基础安全术语科普(三)——RAT
  5. 百万年薪python之路 -- 内置函数练习
  6. Leetcode刷题记录(python3)
  7. 从零开始把项目发布到NPM仓库中心
  8. python3 requests_html 爬取智联招聘数据(简易版)
  9. JVM - 复习
  10. Spring Cloud - Eureka /actuator/info 如何显示信息