1.给定任意int一维数组
a.去掉数组中的重复元素
b.给数组排序
思路1:因为HashSet集合中的元素不允许重复,所以可以将得到的任意数组放进
Hsahset中,再把HashSet中的元素放到一个新建的数组中,对数组进行冒泡排序(当然其他排序也可以),这样就可以得到我们所需要的结果。
思路1优化:将数组放进TreeSet(TreeSet可以自然排序),于是就可以省去冒泡排序这一步。
2.给定任意字符串String str = "sadsadljsaljdlsajdlsajdlsajd";
统计字符串中每个字符出现的次数
思路1:因为HashMap中的K是不能Set类型的,不能重复,V是可以重复的。所以我们可以将字符作为K,次数作为V,字符和数组的键值形成映射。取出字符串中的每一个字符。然后判断map中是否出现过这个字符。将字符和次数分别放入map中。
优化思路:利用三目运算符来判断
代码如下:
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class Test {
public static void main(String args[]) {
//定义任一数组
int array[] = { 3, 5, 4, 2, 1, 2, 3, 4, 1 };
Test t = new Test();
//调用方法,返回数组类型的值
int[] arr = t.paixu2(array);
//加强for循环的遍历
for (int num : arr) {
System.out.print(num + "\t");
}
//定义任一字符串
String str = "abbcccddddeeeeeffffff";
//调用方法,返回值类型
HashMap<Character, Integer> map = t.count(str);
//HashSet的遍历一定要会
Set<Character> set = map.keySet();
for (char c : set) {
//得到次数
int count = map.get(c);
System.out.println(c + "出现次数:" + count);
}
}
/**
* 对传入的数组去掉重复元素,并且排序 HashSet是不允许存在重复元素的
*
* @param array
* 要处理的数组
* @return 返回去掉重复排好序之后的数组
*/
public int[] paixu(int[] array) {
HashSet<Integer> set = new HashSet<Integer>();
for (int i = 0; i < array.length; i++) {
set.add(array[i]);
}
// 定义新数组,长度就是set中的元素个数
int[] arr = new int[set.size()];
int k = 0;
for (int num : set) {
arr[k] = num;
k++;
}
// 冒泡排序
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
//排序
public int[] paixu2(int[] array) {
TreeSet<Integer> set = new TreeSet<Integer>();
for (int i = 0; i < array.length; i++) {
set.add(array[i]);
}
// 定义新数组,长度就是set中的元素个数
int[] arr = new int[set.size()];
int k = 0;
for (int num : set) {
arr[k] = num;
k++;
}
return arr;
}
/**
* 统计指定字符串中每个字符出现的次数
*
* @param str
* 要统计的字符串
* @return 返回 字符-->次数的键值对 映射
*/
public HashMap<Character, Integer> count(String str) {
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
// 遍历字符串,取出字符
for (int i = 0; i < str.length(); i++) {
//得到字符串中的每个字符
char c = str.charAt(i);
Integer num = map.get(c);
// //如果map中出现过这个字符,表示该字符已经在前面被统计过了
// if(map.containsKey(c)){
// int count = map.get(c);
// count++;
// map.put(c, count);
// }else{
// //如果没有出现,表示是第一次统计到
// map.put(c, 1);
// }
//方法二
num = null == num ? 1 : ++num;
map.put(c, num);
}
return map;
}
}
分享到:
相关推荐
一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合框架练习 一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合框架练习 一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合...
集合框架练习.doc
集合框架练习.rar
学士后Java集合框架和泛型课后习题答案 希望能够帮助大家更好的学习JAVA,这些知识还是比较基础的,并没有多大难度 一起共同进步
毕向东Java基础视频教程-集合框架(TreeSet练习).
List接口,Set接口,Map接口,Iterator接口,Comparator
Java学习资料 Java 编程语言的基础知识,Java 的语法、面向对象编程、集合框架、IO 操作等内容,并提供大量的案例代码和实践练习
掌握集合的概念、体系结构、分类及使用场景 2)了解Set接口及主要实现类(HashSet、TreeSet) 3)了解List接口及主要实现类...2、为什么使用集合框架,而尽可能少用数组作为存储结构? 3、如何使用TreeSet实现第一题?
SpringBoot框架源码练习源码集合(数据库+完整源码),,,,
JAVA集合类幻灯片 所谓框架就是一个类库的集合。集合框架就是一个用来表示和操作集合的统一的架构,包含了实现集合的接口与类。
关于Java集合框架上的学习代码和单一练习。 我使用GitHub平台作为组织代码和共享结果的方法。
使用面向对象集合框架序列化反序列化完成的点餐系统
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是spring ...
题库涵盖了全国计算机二级考试中涉及的Java编程相关知识点,包括基础语法、面向对象编程、异常处理、集合框架等内容,旨在帮助考生全面复习和提升Java编程能力,顺利通过考试。 适用人群: 本资源适用于准备参加...
Java面试题是Java开发者在面试过程中经常会遇到的问题,主要涉及Java语言的基础知识、面向对象编程、集合框架、多线程、IO流、网络编程、JVM等方面。以下是一些常见的Java面试题: 1. Java中的四种访问修饰符是什么...