1.HashMap
import java.util.HashMap;
import java.util.Map;
public class HashMapp {
public static void main(String[] args) {
// 声明HashMap对象
Map<String,Integer> map= new HashMap<>();
//添加数据
map.put("ZhangYi",98);
map.put("WangEr",99);
map.put("ZhangShan",89);
map.put("Lisi",92);
//根据键值对键值获取数据‘’
int value=map.get("Lisi");
System.out.println("kay:Lisi And value:"+value);
//获取Map中键值对的个数
int size=map.size();
System.out.println("map 中的键值对个数为:"+size);
//判断Map集合中是否包含键为key的键值对
boolean b1=map.containsKey("LiSI");
boolean b2=map.containsKey("Lisi");
System.out.println("是否包含键值为LiSI的键值对数据:"+b1);
System.out.println("是否包含键值为Lisi的键值对数据:"+b2);
//判断Map集合中是否包含值为value的键值对
boolean b3=map.containsValue(99);
boolean b4=map.containsValue(100);
System.out.println("是否包含值为99的键值对数据:"+b3);
System.out.println("是否包含值为100的键值对数据:"+b4);
//判断Map集合中是否没有任何键值对
boolean b5=map.isEmpty();
System.out.println("map中键值对数据是否为空:"+b5);
//根据键值删除Map中键值对
int value2=map.remove("Lisi");
System.out.println("删除了键为Lisi的键值对数据,其值为:"+value2);
boolean b6=map.containsKey("Lisi");
System.out.println("是否包含键值为Lisi的键值对数据:"+b6);
//清空Map集合中所有的键值对
map.clear();
boolean b7=map.isEmpty();
System.out.println("map中键值对数据是否为空:"+b7);
}
}
2.HashSet
import java.util.HashSet;
/*
* HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
HashSet 允许有 null 值。
HashSet 是无序的,即不会记录插入的顺序。
HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
HashSet 实现了 Set 接口。
*/
public class _HashSet {
public static void main(String[] args) {
HashSet<String> sites = new HashSet<String>();
//添加
sites.add("第一");
sites.add("第二");
sites.add("第二"); // 重复的元素不会被添加
//使用 contains() 方法来判断元素是否存在于集合当中:
boolean res=sites.contains("第三");
//使用 remove() 方法来删除集合中的元素
sites.remove("第二");
//删除所有元素
sites.clear();
//使用 size() 方法计算元素数量
int num=sites.size();
sites.add("第四");
sites.add("第五");
//使用 for-each 来迭代 HashSet 中的元素
for (String i : sites) {
System.out.println(i);
}
System.out.println(sites);
}
}
2.StringBuffer
StringBuffer strbuf; //StringBuffer可变
String str=strbuf.toString(); //要用toString改变成String
//把int型123转换为String初始化为StringBuffer,并对StringBuffer进行了逆转,最后转换回String
String str=new StringBuilder(String.valueOf(1234)).reverse().toString();
3.String
String用法详解
/*这一部分代码
*是要求输入一个八位数字,代表日期,如20120512
*输出年份
*/
Scanner sc = new Scanner(System.in);
n = sc.nextInt(); //输入一个int型的日期20120512
sn = String.valueOf(n); //把int型转换成String
//切割[0,4),并将切割后的字符串转换成int型 //结果是int型的2012
curyear = Integer.parseInt(sn.substring(0, 4)); //String转int
int b = Integer.valueOf(str).intValue() //String转int法二
4.ArrayList
//初始化
List <List <Integer>> list=new ArrayList <List <Integer>>(); //注意这个初始化
List <Integer> now=new ArrayList <Integer>();
//元素的添加和删除
res.add(new ArrayList<Integer>(now));
now.remove(now.size()-1);
//位置交换
Collections.swap(now,index,i);
5.Arrays
int [] flag = new int [30];
Arrays.fill(flag, -1); //填充数组
import java.util.Arrays;
import java.util.Comparator;
public class Array_sort_排序 {
public static void main(String[] args) {
//Arrays.sort(int[] a)
//对一个数组的所有元素进行排序,并且是按从小到大的顺序。
//结果0 1 2 3 4 5 6 7 8 9
int[] num1 = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
Arrays.sort(num1);
//Arrays.sort(int[] a, int fromIndex, int toIndex)
//这种形式是对数组部分排序,也就是对数组a的下标从fromIndex到toIndex-1的元素排序,注意:下标为toIndex的元素不参与排序哦!
//结果7 8 9 2 3 4 1 0 6 5*/
int[] num2 = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
Arrays.sort(num2, 0, 3);
//public static void sort(T[] a,int fromIndex,int toIndex, Comparator c)
//牵扯到了Java里面的泛型
// 注意,要想改变默认的排列顺序,不能使用基本类型(int,double, char)
// 而要使用它们对应的类
//结果 9 8 7 6 5 4 3 2 1 0
Integer[] num3 = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
Comparator cmp = new MyComparator(); //定义一个自定义类MyComparator的对象
Arrays.sort(num3, cmp);
//a-b<0 返回——→a<b ,返回递增的。其中a,b是num4的类型
Integer[] num4 = {9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
Arrays.sort(num4, (a, b) -> a - b);
for(int i = 0; i < num4.length; i ++) {
System.out.print(num4[i] + " ");
}
}
}
//Comparator是一个接口,所以这里我们自己定义的类MyComparator要implents该接口
//而不是extends Comparator
class MyComparator implements Comparator<Integer>{
public int compare(Integer o1, Integer o2) {
//如果n1小于n2,我们就返回正值,如果n1大于n2我们就返回负值,
//这样颠倒一下,就可以实现反向排序了
if(o1 < o2) {
return 1;
}else if(o1 > o2) {
return -1;
}else {
return 0;
}
}
}
6.Calendar
/*1999年的12月31日是星期五,请问:
*未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?
*/
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
Calendar calendar = Calendar.getInstance();
for(int i=1999;i<=10000;i+=100){
calendar.set(Calendar.YEAR, i);
calendar.set(Calendar.MONTH,11);
calendar.set(Calendar.DATE,31);
int t =calendar.get(Calendar.DAY_OF_WEEK);
if(t==1){
System.out.println(i);
break;
}
}
}
}
/*计算从1901.1.1到2000.12.31有多少个星期一*/
int num=0;
Calendar start = Calendar.getInstance();
start.set(1901,1,1);
Calendar end = Calendar.getInstance();
end.set(2000,12,31);
while(!start.equals(end))
{
if(start.get(Calendar.DAY_OF_WEEK)==2)
{
num+=1;
}
start.add(Calendar.DATE, 1);
}
System.out.println(num);
7.二维数组
char[][] ch = new char[][] {"123456".toCharArray(),"456789".toCharArray()};
int [][] arr=new int[][]{{4,5,6,8},{2,3},{1,6,9}};
System.out.println(arr.length);//输出行数 3
System.out.println(arr[0].length);//输出列数 4
int[][] arr2=new int[2][];
List<int[ ]> list = new ArrayList<int [ ]>();
int x=1,y=2;
list.add(new int[] {x,y});
int arr3[][]=list.toArray(new int[list.size()][]);
8.文件输入输出
System.setIn(new FileInputStream(new File("in.txt")));//输入重定向
System.setOut(new PrintStream(new File("out.txt")));//输出重定向
Scanner in = new Scanner(new BufferedInputStream(System.in));
String path = "C:\\Users\\Desktop\\a.txt";
File f = new File(path);
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
String s;
while((s=reader.readLine())!=null) {
s = s.replace(" ", "");
...
}
reader.close();