主要内容有:
一:常见的数据结构(了解)
二;List的三个儿子;(掌握)
1.ArrayList:数据存储时数组的形式,查询快,增删慢.线程不安全,效率很高.
2.Vector:数据存储时数组的形式,查询快,增删慢.线程安全,效率低.
3.LinkedList:数据存储是链表的形式,查询慢,增删快.线程不安全,效率高.
三:泛型(了解)
四:增强for(掌握)
一:常见的数据结构;
首先我们要思考下list为什么要有Arraylist,LinckedList,Vector.这是因为三个儿子的数据结构的存储有可能不一样.由此我们延伸到对于数据结构的一些大致了解.
数据结构是存储数据的方式.其大致有线性表(数组),栈,队列,链表,树,图等等.这个面试会让你们说出他们的特点.在去面试前要好好准备下.现在稍微了解下就行.譬如:
栈:主要特点就是先进后出.这个可以参考给子弹夹上子弹的原理.
队列:主要特点是先进先出.这个可以参考火车进山洞的原理.
数组;存储同一种数据类型的多个元素的容器.特点:查询快,增删慢.
链表:把多个结点连接起来的一串数据.其使用特点是 查询慢,增删快
二List的三个儿子:
1.ArrayList:
用ArrayListc存储自定义Student类对象并遍历
public class ArrayListTest {
public static void main(String[] args) {
// 创建集合对象
ArrayList array = new ArrayList();
// 创建元素对象
Student s1 = new Student("马云", 48);
Student s2 = new Student("史玉柱", 47);
Student s3 = new Student("俞敏洪", 49);
// 添加元素
array.add(s1);
array.add(s2);
array.add(s3);
// 遍历集合
Iterator it = array.iterator();
while (it.hasNext()) {
// Exception in thread "main" java.lang.ClassCastException:
// cn.itcast_01.Student cannot be cast to java.lang.String
// String s = (String) it.next();
// System.out.println(s);
Student s = (Student) it.next();
System.out.println(s.getName() + "***" + s.getAge());
}
//这使用的是用For循环来遍历对象.
for (int x = 0; x < array.size(); x++) {
Student s = (Student) array.get(x);
System.out.println(s.getName() + "***" + s.getAge());
}
}
}
2.LinkedList的特殊功能:
A:添加
void addFirst(Object obj);//在已定义集合中添加到其元素的最前面;
void addLast(Object obj);//在已定义集合中添加到其元素的最后面 B:删除
Object removeFirst();//删除集合中最左面的元素
Object removeLast();//删除集合中最右面的元素;
c.获取
Object getFirst();//获得集合中最左面的元素
Object getLast();//获得集合中最右面的元素;
3.用LinkedList 来演示栈数据的先进后出特点
package cn.itcast01;
import java.util.LinkedList;
public class Mystack {
private LinkedList link;
public Mystack(){
link=new LinkedList();
}
public void add(Object obj){
link.addFirst(obj);
}
public Object get(){
return link.removeFirst();
}
}
******************************************************************************************************
package cn.itcast01;
public class LinkedListTest {
public static void main(String[] args) {
Mystack my=new Mystack();
my.add("Hello");
my.add("Word");
my.add("Java");
System.out.println(my.get());
System.out.println(my.get());
System.out.println(my.get());
}
}
4.Vector的一些方法名即添加获取功能 现在已不常用.所以了解即可.
5.删除字符串中的重复元素
package cn.itcast03;
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList arr=new ArrayList();
arr.add("haha");
arr.add("hehe");
arr.add("xixi");
arr.add("haha");
arr.add("haha");
arr.add("xixi");
for(int i=0;i<arr.size()-1;i++){
for(int j=i+1;j<arr.size();j++){
if(arr.get(i).equals(arr.get(j))){
arr.remove(j);
j--;
}
}
}
Iterator ite =arr.iterator();
while(ite.hasNext()){
String ss=(String)ite.next();
System.out.println(ss);
}
}
}
三:泛型
泛型:从字面上讲,是广泛的数据类型.
是一种特殊的类型,它把指定类型的工作推迟代码声明并实例化类或方法的时候进行.
在使用泛型前:
在使用前;
A;代码中有很多的黄色警告线
B.有一个运行期的异常ClassCastException
使用泛型后的好处:
A:把运行时期的异常提前到编译期间/
B:避免了强制类型转换;
C:惊醒了代码优化'
举一个简单的实例:
//简略引用包的步骤;
class Test
public static void main(String[]args){
ArrayList<String> array=new ArrayList<String>();
array.add("Hello");
array.add("World")'
array.add(10);//这样就会直接报错 不会再出现什么运行异常.在早期就把问题给解决掉
Iterator<String> ite=array.iterator();
while(ite.hasNext()){
String ss=(String)ite.next();//迭代器用了泛型后,就可以不用再写强制类型转换了
//可以直接这样写String ss=ite,next();
System.out.println(ss);
}
}
四:增强For循环;
这是用来遍历数组和集合的一种比较简单的方式";
例 1class Test{
public static void mian(String[]args){
int []arr={1,2,3,4};
for(int x:arr){
Syste.out.println(x);
}
}
}
|
|