JavaSE,
JavaSE,
API(Application Programming Interface):应用程序编程接口。
String:使用了final修饰,不能被继承。
String常用的API:
indexOf(String str)
indexOf(String str, int formIndex)
lastIndexOf(str, int from)
substring(int beginIndex, int endIndex)
trim()
charAt(int index)
startsWith(String str)
endsWith(String str)
toUpperCase()
toLowerCase()
String.valueOf() 将其他类型转换为String类型
StringBuilder
StringBuilder封装可变的字符串,对象创建后可以通过调用方法改变其封装的字符序列。
构造方法:public StringBuilder()
public StringBuilder(String str)
常用的api:
append(String str)
insert(int dstOffset, String s)
delete(int start, int end)
replace(int start, int end , String str)
reverse()
String[] split(String regex)
String replaceAll(String regex, String replacement)
StringBuffer和StringBuilder的区别:
StringBuffer是线程安全,同步处理的,性能稍慢
StringBuilder是非线程安全的,异步处理的,性能稍快
正则表达式:
[abc]、[^abc]、[a-z]、[a-zA-Z0-9]、[a-z&&[^bc]]
正则表达式:.表示一个字符、\d表示一个数字字符、\w表示一个单词字符、\s表示空白字符、\D非数字字符、\W表示非单词字符、\S表示非空白字符
正则表达式数量词:?表示0或1个、*表示0或任意多个、+表示1个或多个、{n}表示n个、{n,}表示大于等于n个、{n,m}表示n到m个
str.matches(regex);
正则表达式中的分组:()表示分组。|表示或的关系。
边界:^表示字符串开始。$表示字符串结束。
日期:
java.text.SimpleDateFormat是一个以与语言环境有关的方式来格式化日期的具体类
构造方法:SimpleDateFormat(String pattern) pattern = "yyyy-MM-dd HH:mm:ss";
方法:final String format(Date date)、Date parse(String source) throws ParseException
Calendar可以对时间分量进行运算:
Calendar是抽象类、所以一般通过这种方式获取它:Calendar c = Calendar.getInstance();
方法:Date getTime();
void setTime(Date d)
Calendar set(Calendar.YEAR,2016); 注意的是周日是每周的第一天,月份从o开始
getActualMaximum(int field)用以获取指定日历字段可能拥有的最大值。
void add(int field, int mount )
集合:
Collection:
boolean addAll(Collection<? extends E> c)
boolean containsAll(Collection<?> c)
迭代器Iterator:
方法:hasNext() 、next() 、remove() 应该注意的是:在使用迭代器遍历集合时,不能通过集合的remove方法删除集合元素,否则会抛出并发更改异常。我们通过迭代器自身提供的remove()方法来删除通过next()迭代出的元素
泛型:
泛型的本质是参数化类型。在类、接口和方法的定义过程中,所操作的数据类型被传入的参数指定。
集合操作-----线性表:
List接口是Collection的子接口,用于定义线性表数据结构。
List接口的两个常见的实现类为ArrayList和LinkedList,分别用动态数组和链表的方式实现了List接口。其中ArrayList更适合于随机访问而LinkedList更适合于插入和删除。
方法:E get(int index)
E set(int index, E element)
void add(int index, E element)
E remove(int index)
List<E> subList(int fromIndex, int toIndex) 需要注意的是subList获取的List与原List占有相同的存储空间,对子List的操作会影响到原List。
List转换为数组:
List的toArray方法用于将集合转换为数组。但实际上该方法是在Collection中定义的。
两个方法:
Object[] toArray()
<T>T[] toArray(T[] a)
Arrays.toString()方法用于输出数组内容。
数组转换为List:
Arrays类中提供了一个静态方法asList,使用该方法我们可以将一个数组转换为对应的List集合。
static <T> List<T> asList<T...a> 注意的是:返回的集合我们不能对其增删元素,否则会抛出异常,并且对集合的元素进行修改会影响数组对应的元素。
比较:
Comparable:重写 int compareTo(T t);方法进行比较。标准(0)
Comparator:int compare(T o1, T o2)
Collections.sort(cells,new Comparator<Cell>(){
public int compare(Cell o1, Cell o2) {
return o1.col-o2.col;
}
})
队列和栈:
队列(Queue)是常用的数据结构,可以队列看成特殊的线性表,对列限制了对线性表的访问方式:只能从线性表的一端添加(offer)元素,从另一端取出(poll)元素。
队列遵循先进先出的原则。
JDK中提供了Queue接口,同时使LinkedList实现了该接口(经常进行增加和删除操作。)
常用的方法:
boolean offer(E e)
E poll() 从队首删除并返回一个元素。
E peek()返回队首的元素(但并不删除)
Deque:
Deque是Queue的子接口,定义了“双端队列”即从队列的两端分别可以入队(offer)和出对(poll),LinkedList实现了该接口。
如果将Deque限制为只能从一端入队和出队,则可实现“栈”(Stack)的数据结构,对于栈而言,入栈称之为push,出栈称之为pop,栈遵循先进后出的原则。
Map:
常用的内部为hash表实现的有:HashMap和内部为排序二叉树实现的TreeMap。
Hash表的工作原理:获取Key的hashCode值,通过hash算法确定将存储的空间(bucket)
重写hashCode方法一般都是通过IDE自动生成的,需要注意两点:一、用equals方法判断一致的对象,的hashCode值应该相同,二、hashCode返回的数值应该符合hash算法。
Map的遍历:
Map提供了三中遍历方式:
一、遍历所有Key ---------Set<K>keySet()方法将所有的Key放在Set集合里面。
二、遍历所有的Key和Value --------- Set<Entry<K,V>>entrySet()方法将当前Map中每一组key----value封装为一个Entry对象装入到Set集合中。
Set<Entry<String,Integer>> entrySet = map.entrySet();
for(Entry<String,Integer> e:entrySet) {
String key = e.getKey();
String value = e.getValue();
}
三、遍历所有的Value
LinkedHashMap实现了有序的Map
相关文章
- 暂无相关文章
用户点评