JavaSE基础知识之常用类和集合
常用类
Object类
protected Object clone() throws CloneNotSupportedException
- 克隆方法:创建并返回此对象的一个副本
- Object 类的 clone 方法执行特定的复制操作。首先,如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException。
- protected void finalize()throws Throwable(跟垃圾回收器有关系)
- 垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
Scanner类
文本扫描器:Scanner (java.util.Scanner)
- 之前的使用:
- 1)导包
- 2)创建键盘录入对象:
Scanner sc = new Scanner(System.in) ;
- 构造方法:
public Scanner(InputStream source)
- 形式参数:
- 抽象类:java.io.InputStream:字节输入流(用来读取字节数)
- 如果方法的形式参数是一个抽象类,那么需要传递该抽象类的子类对象
- System.in:System:是jdk提供的一类
- public static final InputStream in:成员变量 :标准输入流
- public static final PrintStream out:标准输出流
Scanner类中提供了一些判断功能:
- public boolean hasNextXXX():判断当前是否是执行XXX类型
int,short,float,double...
- public XXX nextXXX() :接收指定XXX类型
举例:
public boolean haxNextInt() :判断接收的类型是否是int类型
public int nextInt() : 接收指定的int类型的数据
public boolean haxNextLine():判断接收的数据是否是一个String类型
public String nextLine() : 接收一个String类型
Scanenr:键盘录入的细节问题
- 先录入int类型,在录入String类型 (nextLine())
- 问题:
- 当前字符串录入数据:值就被漏掉了,原因就是回车符号(本身字符串)
- 在下一次录入String类型前,再次创建一个Scanner类型对象
String类
常用类之String
- String 类代表字符串
- 字符串是常量;它们的值在创建之后不能更改(常量的地址值)
- String类是一个特殊的引用类型
- String类型如果作为参数传递,形式参的改变不会影响实际参数
- (跟基本类型作为参数的效果一样)
- null 和 ""的区别: null:对象为空 " ":空字符序列 “” +任何数据
String类的构造方法
- public String() :无参构造方法:创建一个字符串对象
- public String(byte[] bytes):使用平台的默认编码集 :将字节数组---->构造出String类型
- public String(byte[] bytes, int offset, int length):将字节数组的一部分转换成字符串
- 参数1:传递的实际字节数组对象
- 参数2:从哪个位置开始
- 参数3:指定长度
- public String(char[] value):将字符数组—构造成一个字符串对象
- public String(char[] value,int offset,int count) :将字符数组一部分转换成字符串
- 参数1:传递的实际字符数组对象
- 参数2:从哪个位置开始
- 参数3:指定长度
- public String(String original):将一个字符串值存储进来,创建一个字符串对象
String类型的判断功能
- public boolean equals(Object anObject):比较两个字符串内容是否相同
- public boolean equalsIgnoreCase(String anotherString):不区分大小写比较
- public boolean startsWith(String prefix):判断是否以指定的子串开头
- public boolean endsWith(String suffix):判断是否以指定的子串结尾
- public boolean isEmpty():判断字符串是否为空
tring类的获取功能:
- int length():获取字符串长度
- public char charAt(int index):获取指定索引处的字符
- public String concat(String str):字符串拼接功能:使用当前字符串和指定str字符串进行拼接
- public int indexOf(int ch):获取指定字符在此字符串中第一次出现索引值
- public int indexOf(String str):获取指定字符串在此字符串中第一次出现索引值
String类的分割功能
- public String[] split(String regex):通过指定的字符串进行分割,返回值字符串数组
String类转换功能:
- public char[] toCharArray():将字符串转换成字符数组
- public byte[] getBytes() :将字符串----变成字节数组 (过程:编码)
- public static String valueOf(XXX xx):可以将任何类型的数据转换成String
- public String toUpperCase():将此字符串转换成大写
- public String toLowerCase():将此字符串转换成小写
String类的截取功能
- public String substring(int beginIndex):从指定位置开始截取,默认截取到末尾
- public String substring(int beginIndex,int endIndex)
- 从指定位置开始截取,到指定位置结束,但是包含beginIndex,不包含endIndex索引(包前不包后)
替换功能
- public String replace(char oldChar,char newChar):将以前的字符用心的字符替换掉
- public String replace(String oldStr,char newStr):将以前的字符用心的字符替换掉
- 去除两端空格 public String trim()
- 按照字段顺序比较! :如何比较的
- public int compareTo(String anotherString)
StringBuffer类
StringBuffer:线程安全的可变字符序列 ,提供字符串缓冲区
多线程有关系!
进程:—>打开任务管理器,一些客户后台!
线程—相当于开启进程后的某一个任务! 360软件
线程安全 ---->同步的----->执行效率低 !
举例:银行的网站
医院网站…
线程不安全---->不同步的---->执行效率高!
举例:
论坛网站,部分游戏网站…
两个获取功能
int length():获取长度(缓冲区中字符数)
public int capacity():获取缓冲区的容量大小
StringBuffer的构造方法:
1)public StringBuffer():空参构造,初始容量为 16 个字符。(默认的容量足够,不需要指定容量大小)
2)public StringBuffer(String str):构造一个缓冲区,指定字符串内容到缓冲区中,容量大小等于16个+当前字符串的实际长度
3)public StringBuffer(int capacity):指定容量大小,构造一个缓冲区
注意事项:
不能将String类型的值赋值给一个StringBuffer类型
StringBuffer sb = “hello” ; //错误的
String s = new String(“hello”) ;
StringBuffer sb2 = s ; //错误的
StringBuffer的添加功能:
- public StringBuffer append(任何类型数据…):将任何类型的数据追加到缓冲区中(追加末尾)
- public StringBuffer insert(int offset,String str/任何类型数据):将某个元素插入到指定位置
StringBuffer的删除功能
- public StringBuffer deleteCharAt(int index):删除指定位置处的字符,返回缓冲区本身
- public StringBuffer delete(int start,int end):删除从指定位置到指定位置结束(包前不包后,end-1位置)
关于:反转功能
- 键盘录入一个数据,将字符串进行反转—(内容还是字符串内容)
- public StringBuffer reverse():将缓冲区中的字符进行反转!
StringBuffer的其他功能
- StringBuffer的截取功能
- public String substring(int start):从指定位置开始截取,默认截取到末尾
- public String substring(int start, int end):从指定位置开始截取,截取到指定位置结束!
StringBuffer的替换功能
- public StringBuffer replace(int start,int end, String str)
- 从指定位置开始到指定位置结束(end-1处)使用str子串进行替换
String <----> StringBuffer类型的相互转换
//String---->StringBufferString s = "world" ;//StringBuffer sb = s; //type Mismatch:类型不匹配//方式1:通过StringBuffer构造方法:StringBuffer(String str)StringBuffer sb = new StringBuffer(s) ;System.out.println(sb);System.out.println("-------------------------------");//方式2:StringBuffer()无参构造+append(String str):追加StringBuffer sb2 = new StringBuffer() ;sb2.append(s) ;System.out.println(sb2); System.out.println("-------------------------------");//StringBuffer----->StringStringBuffer buffer = new StringBuffer("hello") ;//方式1//public String(StringBuffer buffer):String类型的构造方法String str = new String(buffer) ;System.out.println(str);System.out.println("-------------------------------");//StringBuffer--->public String toString() String str2 = buffer.toString() ;System.out.println(str2);
将数组拼接字符串 "[元素1, 元素2, 元素3, ....]"
//方式1定义一个功能: 将数组拼接成Stringpublic static String arrayToString(int[] arr) {//定义一个结果变量String result = "" ;//拼接左中括号result += "[" ;//遍历数组for (int i = 0; i < arr.length; i++) {if(i==arr.length-1) {result += arr[i] ;result += "]" ;}else {result += arr[i] ;result += ", " ;}}return result;}//方式2:使用StringBuffer的append追加public static String arrayToString2(int[] arr) {//创建一个StringBuffer对象StringBuffer sb = new StringBuffer() ;sb.append("[") ;//遍历数组for (int i = 0; i < arr.length; i++) {if(i==arr.length-1) {sb.append(arr[i]).append("]") ;}else {sb.append(arr[i]).append(", ") ;}}return sb.toString() ;}
字符串内容反转
//方式1public static String reverse(String s) {//定义一个结果变量String result = "" ;//将s变量---->变成字符串数组char[] chs = s.toCharArray() ;for(int x = chs.length-1; x >=0 ; x --) {//拼接每一个元素result += chs[x] ;}return result ;}//方式2:利用StringBuffer的reverse()方法public static String reverse2(String s) {//一步走return new StringBuffer(s).reverse().toString();}
StringBuffer,StringBuilder和数组的区别
前两个都是字符串缓冲区,都支持可变的字符序列,有相同的api
前者:它是一个线程安的,-----同步的----->执行效率低(线程安全的类)
后者:它是一个线程不安全的—不同步的---->执行效率高 单线程程序---->考虑效率问题---->后者会将前者替换掉!
多线程程序—>最重要的安全问题---->StringBuffer了 他们和数组: 都容器,都可以存储数据的!
字符串缓冲区:存储数据最终以"字符序列"存储的(StringBuffer/StringBuilder)
长度可变,可以不断追加:append(xxx)字符串遍历:length()+charAt(int index) 数组:只能存储同一种类的元素长度是固定的,(也是数组的弊端)数组的遍历:length属性:获取数组长度
StringBuffer和String类型作为形式参数有什么区别:
两个都是引用类型
String类作为形式参数,它的效果基本数据类型一样(String是最特殊的引用类型)
String是一个常量,一旦被赋值,其值不能被改变
StringBuffer/StringBuilder,他们作为形式参数,
形式参数的改变会直接影响实际参数(和其他引用类型效果一样)
Integer类
Integer类:包含了int类型的值
public static String toBinaryString(int i):将整数值以"二进制"文本形式体现…
public static String toOctalString(int i)
public static String toHexString(int i)
成员变量(字段)
public static final int MIN_VALUE:最小值
public static final int MAX_VALUE:最大值
Integer类的构造方法
Integer(int value) :将int类型包装了Integer类型
Integer(String s) :将字符串内容包装Integer类型
注意事项:
String是一个数字字符串,否则出现异常!
Jdk5提供一些特性:自动拆装箱功能,后面: 静态导入(导入到方法的级别:前提方式静态的),可变参数(public static 返回值类型 方法名(int …))
- 增强for循环(集合),泛型:类名/接口名<引用类型>
- 举例:
- 基本类型----引用类型: 自动装箱 int---->Integer
- 引用类型—基本数据类型 : 自动拆箱 :Integer --int
- String----->int :Inerget.parseInt(String str)
- String----->long :Long.parseLong(String str)
- String----->double:Double.parseDouble(String str)
- int------>String: Integer.toString(int i)
Character类
Character:char类型的包装类类型,包含一个char类型的值
构造方法
public Character(char value)
判断功能:
public static boolean isDigit(char ch):判断当前字符是否是数字字符
public static boolean isLowerCase(char ch):判断当前字符是否是小写字母字符
public static boolean isUpperCase(char ch):判断当前字符是否是大写字母字符
java.util.Calendar类:日历类
- Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,
- 并为操作日历字段(例如获得下星期的日期)提供了一些方法
- Calendar不能直接实例化!
- 某一个类如果不能直接实例化:
- 首先里面会存在一些静态功能,静态功能的返回值就是该类本身!
- public static Calendar getInstance()
- public int get(int field):获取的日历字段的值!
- 参数:传递日历字段
Calendar的成员方法:
- 给日历字段添加或者减去时间偏移量
- public abstract void add(int field,int amount)
- 日历对象.add(Calendar.DATE,-5):当前日历时间的5天前
- 设置当前年月日,日历时间
- public final void set(int year,int month, int date)
Date类
java.util.Date类
- 特定的瞬间,精确到毫秒。
- 构造方法:
public Date() 无参构造
- 成员方法:
public long getTime() :返回1970 年 1 月 1 日所表示的时间毫秒
java.util.Date 应用场景 String:文本格式 和Date格式的相互转换
关于
- String文本格式 和Date日期格式相互转换
Date---------------->String 日期文本格式 "格式化"操作 - java.text.DateFormat:可以将日期和文本相互转换
- DateFormat继承自Format类:都是抽象类,不能直接实例化!,提供更具体的子类
java.text.SimpleDateFormat extends DateFormat
- 它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)
- SimpleDateFormat的构造方法
public SimpleDateFormat(String pattern):
- 创建一个SimpleDateFormat对象
参数:指定一个模式 要遵循一定的规则(jdk对它规定了)
y年 ------2020 "yyyy"M年中月份----10/03 "MM"d月中的天数----05/21 'dd'h:表示上午/下午的小时数 hhH:一天中的小时数 HHm:分钟数 mms:秒数 ss
模式
- “yyyy-MM-dd HH:mm:ss”
- “yyyy年MM月dd日 HH时mm分ss秒”
- Date---->String
- 格式化的步骤:
- 1)存在Date对象
- 2)创建SimpleDateFormat(String pattern)
- 3)public final String format(Date date):格式化方法
解析
String----->Date
- 步骤:
1)存在String "日期文本" "2020-10-21"2)创建SimpleDateFormat(String pattern)3)public Date parse(String source) throws ParseException
- 解析:
- SimpleDateFormat中的参数模式:必须和String 日期文本格式一致,否则出现解析异常(ParseException)
例如:定义一个工具类
/*** 这个方法是将Date日期格式转换成日期文本格式* @param date 当前日期对象* @param pattern 指定模式 yyyy-MM-dd(年月日)* @return 返回的结果表示是当前日期文本*/public static String date2String(Date date,String pattern) {//分步走//创建SipleDateFormat对象/*SimpleDateFormat sdf = new SimpleDateFormat(pattern) ;//格式化String dateStr = sdf.format(date) ;return dateStr ;*/return new SimpleDateFormat(pattern).format(date) ;}/*** 这个方法是将日期文本转换成日期格式* @param source 已知存在的日期文本* @param pattern 指定模式 yyyy-MM-dd(年月日)* @return 返回的结果是日期格式Date* @throws ParseException */public static Date string2Date(String source,String pattern) throws ParseException {//创建SimpleDateFormat对象/*SimpleDateFormat sdf = new SimpleDateFormat(pattern) ;Date date = sdf.parse(source) ;return date ;*/return new SimpleDateFormat(pattern).parse(source) ;}
测试:
public static void main(String[] args) throws ParseException {//Date--->String 格式化操作Date date = new Date() ;String dateStr = DateUtils.date2String(date, "yyyy"+ "-MM-dd") ;System.out.println(dateStr);System.out.println("---------------------------------");String dateStr2 = DateUtils.date2String(date, "yyyy-MM-dd HH:mm:ss") ;System.out.println(dateStr2);//2020-10-21 14:28:32System.out.println("---------------------------------");//String---->Date:解析操作String s = "2008-5-12 14:28:00" ;Date d = DateUtils.string2Date(s, "yyyy-MM-dd HH:mm:ss"); //模式必须和String文本格式一致System.out.println(d);//Mon May 12 14:28:00 CST 2008}
BigDecimal类
java.math.BigDecimal
描述:对浮点类型的数据进行精确计算的!
构造方法:
public BigDecimal(String val) :字符串"数字字符串"
"1.0"
"0.01.."
成员方法:
public BigDecimal add(BigDecimal augend) :求和
public BigDecimal subtract(BigDecimal subtrahend):减法
public BigDecimal multiply(BigDecimal multiplicand):乘法
public BigDecimal divide(BigDecimal divisor)
Math类
java.lang.Math:
- Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
- public static double abs(double a/…):求某个数据的绝对值
- public static double ceil(double a):向上取整
- public static double floor(double a):向下取整
- public static int min(int a, int b):求两个int数据的最小值
- public static int max(int a,int b):求两个int数据的最大值
- public static double random():随机数[0.0,1.0) ---------> Java提供随机数生成器:Random类 nextInt(int n)
- public static int round(float a):四舍五入…
- public static long round(double a)
- public static double sqrt(double a):开根(一个正整数的平方根) 4—2
- public static double pow(double a,double b):返回结果:a的b次幂
动态导入: - import 包名.类名;
- import java.util.Date/Scanner/List/ArrayList…
静态导入的格式:
import static 包名.类名.方法名;
前提这些方法是静态 的
使用静态导入的注意事项:
如果当前类中出现了和导入的静态方法名一样,冲突了,在使用静态导入的这个的方法的时候
就必须带上限定(包名.类名)
例如:System.out.println(java.lang.Math.abs(-100));
Object array
对象数组
- 能够存储对象的数组
使用数组存储引用数据类型是可以实现的,但是它不满足长度可变的需求,Java提供了 —“集合”,支持长度可变的
- 集合特点:只能存储引用数据类型!
Random类
java.util.Random:随机数生成器
构造方法
- public Random() :(推荐),产生的随机数是变化的
- public Random(long seed):每次产生的随机数 是固定的!
成员方法:
- public int nextInt():获取的是int范围内的随机数
- public int nextInt(int n):获取0到n之间的随机数[0,n)
获取随机数两种方式:
- Math类的random()方法: 返回值double类型
- Random类空参构造+nextInt(int n):获取随机数
System类
System 类包含一些有用的类字段和方法。它不能被实例化。
字段:
- public static final InputStream in :标准的"输入流"
- public static final PrintStream out :标准的"输出流"
键盘录入: Scanner(InputStream in) ---->Scanner(System.in)
输出语句:
System.out.println("xxx")----->System.out--->PrintStream ps (字节打印流)
ps.println("x") : 字节打印流调用方法名println(String str)
成员方法:
public static void gc() 运行垃圾回收器(手动开启)
- 实际开发中,开发者不需要开启
- 运行垃圾回收器,它会调用Obejct类finalize(),回收没有更多引用的对象
public static void exit(int status):参数状态为0:表示正常终止jvm
public static long currentTimeMillis():获取当前系统时间的毫秒值
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) * 从原数组中的指定位置开始进行复制指定length长度复制到目标数组中的某个位置* 参数1:指定源数组* 参数2:源数组中的某个位置* 参数3:目标数组对象* 参数4:目标数组对象中的某个位置* 参数5:指定几个元素复制(长度)
集合
Collection集合
Collection中的高级功能:
boolean addAll(Collection c):添加一个集合中的所有元素
boolean removeAll(Collection c):只要集合中有一个元素被包含,将这个元素从c1删除掉,则返回true!
boolean containsAll(Collection c):包含所有元素才算包含,返回true
public boolean retainAll(Collection c) 取交集:boolean的真实含义是什么:
c1.retainlAll(c2):c1集合的元素是否发生变化!A集合对B集合取交集,将交集的元素保存到A集合,boolean表达的是A集合是否发生变化如果A集合没有变化的,返回结果false;如果A集合有变化,则返回true!集合中Iterator迭代器本质:就是具体的子实现类的内部类间接实现了迭代器!
迭代器的注意事项:
- 1)Object next()获取当前集合的元素(),不能使用多次,使用一次即可,
- 获取所有元素信息
- 2)能使用for循环,不推荐(因为以后集合中元素可能不知道个数,使用while循环)
泛型
格式<数据类型:引用数据类型>
集合为了迎合数组的特点,在创建数组的时候,将类型定义了,来保证集合中的元素类型一致的!
泛型的特点:
将集合的类型在创建的时候创建的时候就明确,保证集合操作的安全性!
好处:
1)避免了强制类型转换
2)将运行时期异常提前到了编译时期
3)解决了黄色警告线问题
4)提高了程序的安全性!
泛型可以应用在哪些地方
- 泛型在集合中使用居多,可以定义类上,可以放在方法上,也可以放在接口上!
- 没有加入泛型之前,程序存在安全隐患,出现类型不匹配:ClassCastException:属于运行时期异常!
泛型的高级通配符
- <?> 当前Object类型/任意Java类型(自定义/jdk提供...)
- <? extends E>:向下限定:E类型以及它的子类
- <? super E>:向上限定:E类型以及它的父类
List集合
List集合 extends Collection
有序的集合,可以允许元素重复!
有序性:存储和取出一致
使用List集合存储字符串并遍历
使用List集合存储自定义对象并遍历(自己完成!)
两种方式:
1)Object[] toArray()
2)Collection集合的Iterator
List集合的特有功能:
添加功能
void add(int index,Object element):在指定位置处添加一个新的元素
删除功能
- Object remove(int index):删除角标对应的元素
获取功能
Object get(int index) :获取指定位置处的元素
int size():获取集合的元素数
Object set(int index,Object element):在指定位置处使用当前元素element元素替换
ListIterator listIterator():List集合的专有遍历方式 :列表迭代器
ListIterator:列表迭代器
- ListIterator listIterator()这个方法底层实现:是通过ArrayList里面的成员内部类
ListItr extends Itr :实现的
正向遍历
- boolean hasNext():判断是否有下一个元素
- Object next() :获取下一个元素
逆向遍历
- boolean hasPrevious():判断是否有上一个元素
- Object previous():获取前一个元素
List集合的遍历方式:
1)Collection集合的方法 Object[] toArray
2)Collection集合的迭代器Iterator iterator()
3)size()+Object get(int index):普通for循环
4)列表迭代器:ListIteraotr listiterator()
5)增强for循环
List三个子实现类的特点:
ArrayList 底层数据结构是可变数组结构: 查询快,增删慢ArrayList底层可变数组: ArrayList(int initialCapacity) :通过初始化容量构造ArrayList集合默认容量大小:capacity:10个ArrayList()---->通过初试容量大小判断是否构造一个新Object[] 数组对象结论:它的扩容机制 ---1.5倍扩容线程角度:线程不安全的类----不同步的----执行效率高! 单线程程序中,通常没有告诉使用什么集合的时候,优先采用的是ArrayList集合! Vector :底层数据数组结构(对象数组)查询快,增删慢线程角度:线程安全的类 ---->同步的----->执行效率低多线程程序中要考虑安全问题,使用VectorLinkedList:底层数据结构:链接列表实现(链表)线程角度:线程不安全-----不同步---->执行效率高特有功能:可以模拟栈结构的:先进后出!线程安全的类StringBuffer/Vector
Set集合
Set集合的特点:
- 元素是不重复的,无序的!(存储和取出不一致,取决于底层HashMap实例)
- 子实现类
HashSet
TreeSet
使用HashSet集合存储自定义对象并遍历
Student的姓名和年龄如果相同,认为同一个人;发现问题:HashSet集合没有去重
底层依赖于HashCode和equals()方法
可能出现一种情况:
成员信息不同,但是hash码值一样
比较每一个成员信息的内容是否相同:name (String)
使用HashSet:底层hash表结构 来保证元素的唯一性!
存储自定义对象,必须重写hashcode()和equals()
TreeSet集合(重点:排序条件!)
排序
底层是一种红黑树结构(TreeMap):“自平衡的二叉树”
Map集合:
如何遍历Map集合
HashMap
TreeMap
ArrayList类
ArrayList集合实现了List接口!
可以存储重复元素,存储和取出一致(有序的)!
ArrayList:单线程程序中考虑执行效率,优先采用!
应用场景:
网络聊天室 查看在线好友列表
张三 (客户端 Socket) ArrayList<Socket>
李四
王五
在一些嵌套中使用
HashMap<String,ArrayList<String>> :Map集合嵌套ArrayList
ArrayList<ArrayList<Student>> :ArrayList嵌套ArrayList
Vector集合
Vector集合:
底层数组结构:查询快,增删慢
线程安全的---->同步的---->执行效率低!
public boolean add(Object e):传统添加元素的方法
特有功能:public void add(int index, E element):插入元素
public Enumeration<Object> elements() --- 相当于:Iterator iterator()
该接口有两个方法
boolean hasMoreElements():判断是否有下一个元素-----> 相当于:boolean hasNext()
Object nextElement():获取一个元素 -----> 相当于:next()
public Object elementAt(int index):通过角标获取指定的元素---->
相当于:Object get(int index)
elementAt()+size() :vector的普通for遍历方式
Enumeration和Iterator功能是重复的
场景:
IO流:合并流 SequenceInputStream 可以将多个文件内容读出来复制到指定文件中!
操作的输入流!
LinkedList集合
LinkedList集合的特点:
底层数据结构是链接列表,查询慢,增删快
线程不安全的---不同的---->执行效率高!
应用场景:
网站中 记录用户浏览过商品足迹 (Web技术:Cookie/Session)
特有功能
添加
public void addFirst(Object e):将该元素添加到列表的开头!
public void addLast(Object e):将该元素添加到列表的末尾!
删除
public Object removeFirst():删除列表第一个
public Object removeLast():删除列表最后一个
获取
public Object getFirst():获取第一个
public Object getLast() :获取第二个
弹栈和压栈
public Object pop():此列表所表示的堆栈处弹出一个元素
public void push(Object e):将元素推入此列表所表示的堆栈
例子:模拟栈的先进后出:
public class MyStack {//成员变量位置private LinkedList<String> link = null ;//无参构造方法public MyStack() {link = new LinkedList<String>() ;}//提供一个add方法,添加元素public void add(String obj) {//间接通过自定义的功能:使用LinkedList的功能link.addFirst(obj);//link.addFirst("hello") ;----"hello"//addFirst("world") --->"world","hello"//addFirst("java")---->"java","world","hello"}//在通过获取元素public String get() {//使用LinkedList里面 public Object removeFirst()return link.removeFirst() ;}//判断功能public boolean isEmpty() {//利用LinkedList 的判断功能return link.isEmpty() ; //isEmpty():集合为空,返回值true}}
froeach
JDK5之后提供了特性:
- <引用类型>泛型,静态导入,增强for,可变参数,自动拆装箱
增强for的格式:
for(数据类型 变量名 : 数组对象/集合对象(使用最多)){
输出变量名即可
}
作用: 是替代迭代器使用,简化遍历集合的书写格式!
注意事项:
1)增强for主要用在集合中,数组一般使用的时候普通for
2)前提条件:
要使用增强for循环的话,必须保证该集合不能为null,否则就会出现空指针
NullPointerException
解决方案:
针对该对象非空判断即可!
JavaSE基础知识之常用类和集合相关推荐
- Java基础知识——Java常用类的使用
目录 内容小结 String类 String对象的创建 字符串的特性判断 拼接 String类的常用方法 String和char[]的相互转换 实现代码 StringBuffer StringBuff ...
- JavaSE基础知识(五)--面向对象代码实现初步(实现一个简单的类类型代码)
Java SE 是什么,包括哪些内容(五)? 本文内容参考自Java8标准 一.面向对象(代码实现): 首先,在这里我需要说明一个根本性的问题:实际上,面向对象编程包括了两部分,一个是你的编程思想,一 ...
- 【JavaSE 基础知识盲点小结】
[JavaSE 基础知识盲点小结] 一.第一天: 1. 在 cmd 命令窗口问题: ①编译是: javac HelloWorld.java ②运行时是: java HelloWorld (类名 不加 ...
- Python基础知识与常用数据类型
Python基础知识与常用数据类型 目录 Python基础知识与常用数据类型 一.Python概述: 二.Python中的基础语法: 三.Python内置数据结构: 4.附录 一.Python概述: ...
- 面向对象-----6(javaSE基础知识完结篇)
目录 解析面向对象 内存分析 三大特性.封装.继承.多态 接口 内部类 涉及知识目录总览: 资料来自于马士兵java笔记 这是javaSE基础知识的最后一篇笔记 1. 解析面向对象 返回目录 [1]面 ...
- 总结Linux基础知识和常用渗透命令!!!
作为Web渗透的初学者,Linux基础知识和常用命令是我们的必备技能,本文详细讲解了Linux相关知识点及Web渗透免了高龄.如果想玩好Kali或渗透,你需要学好Linux及相关命令,以及端口扫描.漏 ...
- Javase基础知识总结
今天11.25,我开始了第二天的写日记 我也开始了我的整理笔记 我希望我可以一直坚持下去 我不想为了未来的我后悔 加油 Javase基础知识总结 写代码: 1,明确需求.我要做什么? 2,分析思路.我 ...
- db2 replace函数的用法_SQL基础知识:常用字符处理函数
原标题:SQL基础知识:常用字符处理函数 作者:丶平凡世界
- java map常用类及其方法_Day50.Map类常用的方法 -Java常用类、集合#、IO
Day50.Map类常用的方法 -Java常用类.集合#.IO Day50.Map类常用的方法 -Java常用类.集合#.IO Map类常用的方法 . 总结: 常用方法 添加: put(Object ...
最新文章
- CMake命令之function
- 关于python中requests模块导入问题-Python中requests模块的核心使用(1)
- IoC(Inversion of Control,控制反转)模式
- 亚马逊 开发者api 调用_关于微信API:常用微信API文档整理
- Windows Phone 8.1 开发实例 网络编程 天气预报
- Runner站立会议05
- JBOSS 5.0.0GA的集群搭建
- python str has no attribute_python – AttributeError(“’str’object has no attribute’read’”)...
- 黑科技网站推荐 第一弹 RemoveBg [一键抠图]
- 淘宝上大量贩卖微信号,这些人买这么多微信号目的是
- maven-repository文件
- requests爬取英雄联盟皮肤图片
- Codeforces Round #467 (Div. 2) - D. Sleepy Game (找环)
- 判断各类无盘软件是否处于超管状态
- ZYNQ开发系列——双串口打印以及串口波特率设置
- ibatis配置文件中 parameterClass,resultClass,resultMap 表示的意思
- Java--JSP四大作用域、九大内置对象
- uva10635Prince and Princess(LIS)
- 开黑 你造【王者荣耀】是什么编程语言开发的吗?
- python 常用系统内置模块
热门文章
- 如何成为某个领域的达人?
- 十大管理之风险管理知识点
- ES--索引生命周期管理
- Linux iondma-bufiommusglistgenpool的原理
- 自用的桌面日历软件分享!高效的时间管理工具!超级赞!
- 可视化和回归分析星巴克咖啡在中国的定价建议
- 曲形文字识别 - Transformer-based Convolutional-Attention Network for Irregular Text Recognition
- 选择大于努力,观念决定命运,智慧决定贫富
- 先建立一个Point(点)类,包含数据成员x,y(坐标点)。以它为基类,派生出一个Circle(圆)类,增加数据成员r(半径),再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再
- Flash实例教程:鼠标感应放大缩小动画_Flash_||太平洋电脑网