一、集合
(1)Set
1.概述
Set是Java中的集合类,提供了一种无顺序,不重复的集合。常用的子类包括HashSet, TreeSet等。
(1)HashSet底层使用HashMap实现,根据元素的hashCode和equals来判断是否为重复元素。当元素的hashCode相同且equals返回true时则认为是重复元素。可以放入null但只能放一个null
(2)TreeSet底层使用红黑树实现,Set上的元素被放在一个自动排序的红黑树中。不能放入null
(2)常用方法
(1)add() 向Set中添加元素
(2)size() 返加Set的大小,即Set中元素的数量
(3)remove(Object o) 从Set上删除元素
(4)boolean contains(Object o) 检查Set中是否包含某个元素,包含返回true,不包含返回false
(5)iterator() 返回Set的迭代器
(6)clear() 清空Setis
(7)Empty() 检查Set是否为空,为空返回true, 否则返回false
package collect;
import java.util.HashSet;
import java.util.Set;
/**
* [简要描述]:Set使用
* [详细描述]:
*
* @author Smalight Lv
* @version 1.0, 2021/5/6 15:15
* @since JDK 1.8
*/
public class SetTest1 {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
//添加元素到Set
set.add("张三");
set.add("李四");
set.add("王五");
//打印Set
System.out.println(set);
//再加入一个王五,不能添加成功
boolean rst = set.add("王五");
System.out.println("添加结果:" + rst);
System.out.println(set);
//HashSet可以加入null,但只能加入一个null
rst = set.add(null);
System.out.println("添加第一个null:" + rst);
System.out.println(set);
rst = set.add(null);
System.out.println("添加第二个null:" + rst);
System.out.println(set);
//判断Set中是否包含某个元素
rst = set.contains("张三");
System.out.println("是否包含元素\"张三\":" + rst);
//删除元素
set.remove("张三");
System.out.println(set);
//判断Set中是否包含某个元素
rst = set.contains("张三");
System.out.println("是否包含元素\"张三\":" + rst);
//Set的大小,即Set中元素的数量
int size = set.size();
System.out.println("Set的大小:" + size);
//判断Set是否为空
boolean isEmpty = set.isEmpty();
System.out.println("Set是否为空:" + isEmpty);
//清空Set
set.clear();
System.out.println(set);
//判断Set是否为空
isEmpty = set.isEmpty();
System.out.println("Set是否为空:" + isEmpty);
}
}
运行结果
[李四, 张三, 王五]
添加结果:false
[李四, 张三, 王五]
添加第一个null:true
[null, 李四, 张三, 王五]
添加第二个null:false
[null, 李四, 张三, 王五]
是否包含元素"张三":true
[null, 李四, 王五]
是否包含元素"张三":false
Set的大小:3
Set是否为空:false
[]
Set是否为空:true
(2)Map
Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值
Map提供了一些常用方法,如keySet()、entrySet()等方法keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry
Map<String, String> map = new HashMap<String, String>();
map.put(“key1”, “value1”);
map.put(“key2”, “value2”);
map.put(“key3”, “value3”);
1.初始化
Map<String, String> map = new HashMap<String, String>();
2.插入元素
map.put("key1", "value1");
3.获取元素
map.get("key1")
4.移除元素
map.remove("key1");
5.清空map
map.clear();
(3)List
1.特点
(1)List集合类中元素有序(添加顺序和取出顺序一致),且可重复
(2)List集合中的每个元素都有其对应的顺序索引,即支持索引
(3)List容器中的元素都对应一个整数型的序号记载其在容器中的位置,额可以根据序号存取容器中的元素
(4)List接口的实现类非常多,常用的有ArrayList、Set、Vector
2.常用方法
public class ListMethod {
@SuppressWarnings({"all"})
public static void main(String[] args) {
List list = new ArrayList();
list.add("张三丰");
list.add("贾宝玉");
// void add(int index, Object ele):在index位置插入ele元素
//在index = 1的位置插入一个对象
list.add(1, "韩顺平");
System.out.println("list=" + list);
// boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来
List list2 = new ArrayList();
list2.add("jack");
list2.add("tom");
list.addAll(1, list2);
System.out.println("list=" + list);
// Object get(int index):获取指定index位置的元素
//说过
// int indexOf(Object obj):返回obj在集合中首次出现的位置
System.out.println(list.indexOf("tom"));//2
// int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置
list.add("韩顺平");
System.out.println("list=" + list);
System.out.println(list.lastIndexOf("韩顺平"));
// Object remove(int index):移除指定index位置的元素,并返回此元素
list.remove(0);
System.out.println("list=" + list);
// Object set(int index, Object ele):设置指定index位置的元素为ele , 相当于是替换.
list.set(1, "玛丽");
System.out.println("list=" + list);
// List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合
// 注意返回的子集合 fromIndex <= subList < toIndex
List returnlist = list.subList(0, 2);
System.out.println("returnlist=" + returnlist);
}
}
二、常用类
(1)Object
Java Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法
Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承 Object,成为 Object 的子类
1.显式继承:
public class Runoob extends Object{
}
2.隐式继承:
public class Runoob {
}
3.构造一个新对象:
Object()
4.创建并返回一个对象的拷贝:
protected Object clone()
5.比较两个对象是否相等:
boolean equals(Object obj)
(2)String
字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串
1.创建字符串:
String str = "Runoob";
2.用构造函数创建字符串:
String str2=new String("Runoob");
public class StringDemo{
public static void main(String args[]){
char[] helloArray = { 'r', 'u', 'n', 'o', 'o', 'b'};
String helloString = new String(helloArray);
System.out.println( helloString );
}
}
3.连接字符串:
string1.concat(string2);
(3)StringBuilder
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象
public class RunoobTest{
public static void main(String args[]){
StringBuilder sb = new StringBuilder(10);
sb.append("Runoob..");
System.out.println(sb);
sb.append("!");
System.out.println(sb);
sb.insert(8, "Java");
System.out.println(sb);
sb.delete(5,8);
System.out.println(sb);
}
}
(4)StringBuffer
在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer
public class Test{
public static void main(String args[]){
StringBuffer sBuffer = new StringBuffer("菜鸟教程官网:");
sBuffer.append("www");
sBuffer.append(".runoob");
sBuffer.append(".com");
System.out.println(sBuffer);
}
}
1. 将指定的字符串追加到此字符序列:
public StringBuffer append(String s)
2. 将此字符序列用其反转形式取代:
public StringBuffer reverse()
3.移除此序列的子字符串中的字符:
public delete(int start, int end)
(5)System
System系统类,主要用于获取系统的属性数据和其他操作,因其构造方法是私有的并且类中的成员方法都是静态的,所以在使用的时候不需要创建对象,可直接调用
1.arraycopy(…)方法将指定原数组中的数据从指定位置复制到目标数组的指定位置:
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
2.currentTimeMillis()方法返回当前时间(以毫秒为单位)
static long currentTimeMillis()
3.gc()方法用来运行垃圾回收器
static void gc();
4.exit(int status)方法用于终止当前运行的Java虚拟机。如果参数是0,表示正常退出JVM;如果参数非0,表示异常退出JVM
static void exit(int status);
(6)Data
java.util,Date 表示日期和时间的类
类 Date 表示特定的瞬间,精确到千分之一秒(毫秒)
获取时间原点到当前系统时间经历了多少秒
1.getTime()方法
返回:时间原点以来,此Date对象表示的毫秒数
importjava.util.Date;public classDemoGetTime {public static voidmain(String[] args) {
Date date= newDate();long time =date.getTime();//输出:1578728202850//该方法类似于 System.currentTimeMillis()
System.out.println(time);
}
}
2.Date类的无参构造方法
返回:当前系统的日期和时间
importjava.util.Date;public classDemoDate1 {public static voidmain(String[] args) {
Date date= newDate();//输出:Sat Jan 11 15:40:50 CST 2020
System.out.println(date);
}
}
3.Date类的带参构造方法
Date(long date) 参数为一个毫秒值,把传入的毫秒值转换为Date日期
返回:传入参数(毫秒值)对应的的日期和时间
importjava.util.Date;public classDemoDate2 {public static voidmain(String[] args) {
Date date= new Date(0L);//这里输出的是0毫秒时的日期和时间,即时间原点的日期和时间//输出:Thu Jan 01 08:00:00 CST 1970
System.out.println(date);
}
}