1、(键盘录入字符串)
"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)
- 分析: public V put(K key,V value) :判断当前的Character (键)是否是第一次存储 集合对象.put(char,1) ;
- HashMap<Character,Integer> 集合对象.get(Character ch ) ;—>Integer
package day19_study;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class Test1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s = sc.nextLine();
TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
char[] ch = s.toCharArray();
for (char chs : ch) {
if (!tm.containsKey(chs)) {
tm.put(chs, 1); // 如果不包含这个键就将此键和值为1添加进集合
} else {
tm.put(chs, tm.get(chs) + 1); // 如果包含这个键 就将此键和此键所对应的值加1再添加进来 }
}
}
StringBuffer sb = new StringBuffer();
Set<Character> set = tm.keySet();
for (Character key : set) {
Integer vla = tm.get(key);
sb.append(key).append("(").append(vla).append(")");
}
System.out.println(sb.toString());
}
}
2、 ArrayList嵌套HashMap
-
ArrayList<HashMap<String,String>>
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;
/*
* 三个子集合
* HashMap<String,String>
* 控制台:
*
* 周瑜 小乔
* 孙策 大乔
马超 曹操
刘备 诸葛亮
高圆圆 赵又廷
文章 马伊琍
*/
public class ArrayListIncludeHashMapTest {
public static void main(String[] args) {
//创建一个大集合
ArrayList<HashMap<String, String>> array =
new ArrayList<HashMap<String,String>>() ;
//第一个子集合
HashMap<String, String> hm1 = new HashMap<String, String>() ;
hm1.put("周瑜 ", "小乔") ;
hm1.put("孙策 ", "大乔") ;
//添加到大集合中
array.add(hm1) ;
HashMap<String, String> hm2 = new HashMap<String, String>() ;
hm2.put("马超 ", "曹操") ;
hm2.put("刘备", "诸葛亮") ;
array.add(hm2) ;
HashMap<String, String> hm3 = new HashMap<String, String>() ;
hm3.put("高圆圆 ", "赵又廷") ;
hm3.put("文章", "马伊琍") ;
array.add(hm3) ;
//遍历集合
for(HashMap<String, String> hm :array) {
//通过hm对象 获取所有的键的集合
Set<String> set = hm.keySet() ;
//增强for
for(String key: set) {
//通过键或者值
String value = hm.get(key) ;
System.out.println(key+"---"+value);
}
}
}
}
3、HashMap嵌套HashMap
-
HashMap<String,HashMap<String,Integer>>
打印结果:
基础班
张三 20
李四 25
就业班
王五 38
赵六 30
import java.util.HashMap;
public class Test2 {
public static void main(String[] args) {
HashMap<String, HashMap<String, Integer>> hm = new HashMap<String, HashMap<String, Integer>>();
HashMap<String, Integer> hm1 = new HashMap<String, Integer>();
HashMap<String, Integer> hm2 = new HashMap<String, Integer>();
hm.put("基础班", hm1);
hm.put("就业班", hm2);
hm1.put("张三", 20);
hm1.put("李四", 22);
hm2.put("王五", 21);
hm2.put("赵六", 25);
for (String hms : hm.keySet()) {
HashMap<String, Integer> value = hm.get(hms);
System.out.println(hms);
for (String s : value.keySet()) {
Integer i = value.get(s);
System.out.println("\t" + i + "\t" + s);
}
}
}
}
3、 键盘录入5个学生的(姓名,语文成绩,数学成绩,英文成绩),按照总分从高到低进行排序
*1)创建学生类,提供成员 name,chinese,Math,English
*2)创建一个TreeSet集合对象,使用比较器排序的匿名内部类的方式
*3)使用for循环分别录入5个人的信息
-
3.1)创建键盘录入对象
-
录入数据的时候,全部字符串String接收
-
通过Integer.parestInt(String s)
-
使用封装的思想
-
Student s = new Student();
-
通过setXXX()给成员赋值;
*4)遍历
- */
- 键盘录入5个学生的(姓名,语文成绩,数学成绩,英文成绩),按照总分从高到低进行排序
*1)创建学生类,提供成员 name,chinese,Math,English
*2)创建一个TreeSet集合对象,使用比较器排序的匿名内部类的方式
*3)使用for循环分别录入5个人的信息- 3.1)创建键盘录入对象
-
录入数据的时候,全部字符串String接收
-
通过Integer.parestInt(String s)*
- 3.2 使用封装的思想
-
Student s = new Student();
-
通过setXXX()给成员赋值;
- 4)遍历
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;
public class TreeSetTest {
public static void main(String[] args) {
//创建一个集合对象,有参构造的形式
TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
//return 0;
//主要条件
//总分从高到低
int num = s2.getSum() - s1.getSum();
//如果总分一样,需要比较语文成绩
int num2 = (num==0)?(s2.getChinese()-s1.getChinese()):num ;
//总分一样,语文一样,比较数学
int num3 = (num2==0)?(s2.getMath()-s1.getMath()):num2;
//总分一样,语文一样,数学一样
//比较是否是同一个人
int num4 = (num3==0)?(s2.getName().compareTo(s1.getName())):num3 ;
return num4 ;
}
});
System.out.println("录入学生信息开始...");
//键盘录入5个学生
for(int x = 1; x <=5; x ++) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in) ;
//提示并接受数据(使用字符串接收)
System.out.println("请您输入第"+x+"个学生的姓名:");
String name = sc.nextLine() ;
System.out.println("请您输入第"+x+"个学生的语文成绩:");
String chineseStr = sc.nextLine() ;
System.out.println("请您输入第"+x+"个学生的数学成绩:");
String mathStr = sc.nextLine() ;
System.out.println("请您输入第"+x+"个学生的英语成绩:");
String englishStr = sc.nextLine() ;
//封装学生对象
Student s = new Student() ;
s.setName(name);
s.setChinese(Integer.parseInt(chineseStr));
s.setMath(Integer.parseInt(mathStr));
s.setEnglish(Integer.parseInt(englishStr));
//给集合中添加学生对象
ts.add(s) ;
}
System.out.println("录入学生信息完毕...");
System.out.println("姓名\t语文成绩\t数学成绩\t英文成绩\t");
//遍历集合
for(Student s:ts) {
System.out.println(s.getName()+"\t"+s.getChinese()+"\t"+s.getMath()+"\t"+s.getEnglish());
}
}
}
//Student类
public class Student {
private String name ;
private int chinese;//语文
private int math ;//数学
private int english;//英语
public Student() {
super();
}
public Student(String name, int chinese, int math, int english) {
super();
this.name = name;
this.chinese = chinese;
this.math = math;
this.english = english;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getChinese() {
return chinese;
}
public void setChinese(int chinese) {
this.chinese = chinese;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
public int getEnglish() {
return english;
}
public void setEnglish(int english) {
this.english = english;
}
//计算总分
public int getSum() {
return chinese + math + english ;
}
@Override
public String toString() {
return "Student [name=" + name + ", chinese=" + chinese + ", math=" + math + ", english=" + english + "]";
}
}
4、自己定义一个集合,添加内容,然后用三种不同方式遍历
package day19_study;
import java.util.ArrayList;
import java.util.Iterator;
public class Test3 {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<String>();
// 创建并添加元素
array.add("hello");
array.add("world");
array.add("java");
// 迭代器
Iterator<String> it = array.iterator();
while (it.hasNext()) {
String s = it.next();
System.out.println(s);
}
System.out.println("------------------");
// 普通for
for (int x = 0; x < array.size(); x++) {
String s = array.get(x);
System.out.println(s);
}
System.out.println("------------------");
// 增强for
for (String s : array) {
System.out.println(s);
}
}
}
4、1)编写一个程序,获取10个1至20的随机数,要求随机数不能重复。
import java.util.HashSet;
import java.util.Random;
public class Test1 {
public static void main(String[] args) {
HashSet<Integer> ht = new HashSet<Integer>();
int x = 0;
while (x < 10) {
Random r = new Random();
int num = r.nextInt(20) + 1;
if (!ht.contains(num)) {
ht.add(num);
x++;
}
}
for (Integer a : ht) {
System.out.print(a + " ");
}
}
}