工作一年有余了,最近有公司打电话邀请面试,抱着找打击和检验自己水平的心态应邀,面试之后发现自己的java基础知识方面的知识还是相当薄弱,平时copy久了,纸上写代码的能力严重下降,立此贴,总结一下java中最常使用的字符串操作,希望自己真正用得上的时候不至于连基本的知识都答不上。平时遇到这些简单基础的问题,往往从程序片段里面copy,或者搜索一下,脑袋日渐麻木。
1.字符串反转。
字符串反转有两种方式:
a.使用java的api函数:
String reverse(String str){
return new StringBuffer(str).reverse().toString();
}
b.自己手写反转函数:
String reverse(String str){
char[] ch = str.toCharArray();
char[] tmpch = new char[ch.length];
int j = 0;
for(int i=ch.length -1 ;i>=0;i--){
tmpch[j++] = ch[i];
}
<pre name="code" class="java"> return new String(tmpch);<pre name="code" class="java">
}
2.List,Set,Map的常见操作:
有lista 和 listb,要求 lista并listb 和 lista交listb 的差集;
List<Integer> lista = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(3);
Set<Integer> set = new HashSet<Integer>();
set.add(0);
set.add(4);
set.add(2);
Iterator it=set.iterator();
List list1 = new ArrayList();
list1.addAll(list);
list1.addAll(set);
List list2 = new ArrayList();
list2.addAll(list);
list2.retainAll(set);
list1.removeAll(list2);
it = list1.iterator();
while(it.hasNext()){
System.out.println(it.next().toString());
}
3.String,StringBuffer,StringBuilder的区别?
String 是final类型其值是不可以改变的,每次对String的改变其实都是生成了新的对象。
StringBuffer值可以append和insert,每次改变都是在原对象上的改变,没有生成新的对象,StringBuffer是线程安全的。
StringBuilder基本功能是StringBuffer一样,唯一的区别是StringBuilder是线程不同步的。
效率排序 StringBuilder > StringBuffer > String