list的子类特点
ArrayList :
底层数据结构是数组,查询快,增删慢
线程不安全 ,效率高
Vertor:
底层数据结构是数组,查询快,增删慢
线程安全,效率低
LinkedList:
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
创建集合对象
ArrayList array = new Array();
创建元素对象,并添加元素
array.add("字符串");
用迭代器遍历
迭代器依赖于集合,集合什么类型迭代器就什么类型
Iterator it = array.iterator();
while(it.hasNext())
{
String s = (String)it.next();
System.out.println(s);
}
for(int i=0;i<array.size();i++)
{
String s= (String)array.get(i);
System.out.println(s);
}
Arraylist存储自定义对象遍历
Array array = new Array();
Student s = new Student("haha")
array.add(s);
Iterator it = array.iterator();
while(it.hasNext())
{
Student s = (Student)it.next();
System.out.println(s);
}
for(int i=0;i<array.size();i++)
{
Student s= (Student)array.get(i);
System.out.println(s);
}
Vetor 特有功能
添加功能
public void addElement(Objects obj)
获取功能:
public object elementAt(int index)
public Enumeration elements();
方法:
Vetor v = new Vetor
v.addElement("content");
for(int x=0;x<v.size();x++)
{
String s = (String) v.elementAt(x);
System.out.println(s);
}
Enumeration en = v.elements;//因为Enumeration是接口,所以返回的实现类对象
whlie(en.hasMoreElements())
{
String s = (String) en.nextElement();
System.out.println(s);
}
JDK的升级原因:
安全
效率
简化代码
LinkedList:
添加功能
public void addFirst(Object e)
public void addLast(Object e)
获取功能
public Object getFirst()
public Object getLast()
删除功能
public E removeFirst()
public Object removeLast();
示例代码
LinkedList link = new LinkedList();
link.addFirst("content");
link.getFirst()
link.removeFirst()
ArrayList去除集合中重复的字符串
A:创建集合对象
B 添加多个集合元素
C 创建新集合
D 遍历旧集合,获取得到的每一个元素
E 对比新集合是够有相同的元素,没有则添加到新的集合中
F 遍历新的集合
在不创建新集合的前提下删除集合内相同元素
for(int x=0;x<array.size()-1,x++)
{
for(int y=x+1;y<array.size();y++)
{
if(array.get(x).equals(array.get(y))
{
array.remove(y)
y--
}
}
}
android的调试
先可在可能出错的前面打断点
然后在以dubug模式运行
Object()的equals的默认比较是地址值,但是new的东西地址值不同
判断的地方容易出错,如果实在找不到其他的出错原因,就的看我们调用方法的源码(如果是我们调用的方法不满足我们需求,可以通过在重写方法来实现需求)
请用LinkedList模拟数据结构的集合(你自己定义一个集合类内部使用LinkedList模拟)
public class MyStack{
private LinkedList linkedlist;
public MyStack()
{
link = new LinkList();
}
public void add(Object obj)
{
link.addFirst(obj);
}
public Object get()
{
// return link.getFirst();
return link.removeFirst()
}
public boolean isEmpty()
{
return link.is.Empty()
}
}
Objects是引用类型,但是从JDK之后就可以自动装箱啦
泛型: 是一种特殊的数据类型,明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊类型,参数化类型,把类型当作参数一样来传递。
<数据类型>
此处的数据类型只能是引用类型。
泛型在什么地方用?
看api,如果类,接口,抽象类后面跟的有<E>就说要使用泛型,一般在集合中使用
public class ArrayListDemo{
public static void main(String [] agrs)
{
Array<String> array = new ArrayList<String>();
array.add("content");
Iterator<String> it = array.iterator();
while(it.hasNext()){
String s = it.next();
System.out.println(s);
}
System.out.println(------------);
for(int x=0;x<array.size();x++)
{
String s = array.get(x);
System.out.println(s);
}
}
}
public class ArrayListDemos{
public static void main(String [] agrs){
ArrayList<Student> array = new ArrayList<Student>();
//后面的类可以不写 ,JDK7之后的新特性:泛型推断
Student s = new Student("caochao",40);
array.add(s);
Iterator <Student> it = array.iterator();
while(it.hasNext()){
Student s = it.next();
System.out.println(s.getName+"----"+s.getAge());
}
System.out.println("------");
}
}
ArrayList :
底层数据结构是数组,查询快,增删慢
线程不安全 ,效率高
Vertor:
底层数据结构是数组,查询快,增删慢
线程安全,效率低
LinkedList:
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
创建集合对象
ArrayList array = new Array();
创建元素对象,并添加元素
array.add("字符串");
用迭代器遍历
迭代器依赖于集合,集合什么类型迭代器就什么类型
Iterator it = array.iterator();
while(it.hasNext())
{
String s = (String)it.next();
System.out.println(s);
}
for(int i=0;i<array.size();i++)
{
String s= (String)array.get(i);
System.out.println(s);
}
Arraylist存储自定义对象遍历
Array array = new Array();
Student s = new Student("haha")
array.add(s);
Iterator it = array.iterator();
while(it.hasNext())
{
Student s = (Student)it.next();
System.out.println(s);
}
for(int i=0;i<array.size();i++)
{
Student s= (Student)array.get(i);
System.out.println(s);
}
Vetor 特有功能
添加功能
public void addElement(Objects obj)
获取功能:
public object elementAt(int index)
public Enumeration elements();
方法:
Vetor v = new Vetor
v.addElement("content");
for(int x=0;x<v.size();x++)
{
String s = (String) v.elementAt(x);
System.out.println(s);
}
Enumeration en = v.elements;//因为Enumeration是接口,所以返回的实现类对象
whlie(en.hasMoreElements())
{
String s = (String) en.nextElement();
System.out.println(s);
}
JDK的升级原因:
安全
效率
简化代码
LinkedList:
添加功能
public void addFirst(Object e)
public void addLast(Object e)
获取功能
public Object getFirst()
public Object getLast()
删除功能
public E removeFirst()
public Object removeLast();
示例代码
LinkedList link = new LinkedList();
link.addFirst("content");
link.getFirst()
link.removeFirst()
ArrayList去除集合中重复的字符串
A:创建集合对象
B 添加多个集合元素
C 创建新集合
D 遍历旧集合,获取得到的每一个元素
E 对比新集合是够有相同的元素,没有则添加到新的集合中
F 遍历新的集合
在不创建新集合的前提下删除集合内相同元素
for(int x=0;x<array.size()-1,x++)
{
for(int y=x+1;y<array.size();y++)
{
if(array.get(x).equals(array.get(y))
{
array.remove(y)
y--
}
}
}
android的调试
先可在可能出错的前面打断点
然后在以dubug模式运行
Object()的equals的默认比较是地址值,但是new的东西地址值不同
判断的地方容易出错,如果实在找不到其他的出错原因,就的看我们调用方法的源码(如果是我们调用的方法不满足我们需求,可以通过在重写方法来实现需求)
请用LinkedList模拟数据结构的集合(你自己定义一个集合类内部使用LinkedList模拟)
public class MyStack{
private LinkedList linkedlist;
public MyStack()
{
link = new LinkList();
}
public void add(Object obj)
{
link.addFirst(obj);
}
public Object get()
{
// return link.getFirst();
return link.removeFirst()
}
public boolean isEmpty()
{
return link.is.Empty()
}
}
Objects是引用类型,但是从JDK之后就可以自动装箱啦
泛型: 是一种特殊的数据类型,明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊类型,参数化类型,把类型当作参数一样来传递。
<数据类型>
此处的数据类型只能是引用类型。
泛型在什么地方用?
看api,如果类,接口,抽象类后面跟的有<E>就说要使用泛型,一般在集合中使用
public class ArrayListDemo{
public static void main(String [] agrs)
{
Array<String> array = new ArrayList<String>();
array.add("content");
Iterator<String> it = array.iterator();
while(it.hasNext()){
String s = it.next();
System.out.println(s);
}
System.out.println(------------);
for(int x=0;x<array.size();x++)
{
String s = array.get(x);
System.out.println(s);
}
}
}
public class ArrayListDemos{
public static void main(String [] agrs){
ArrayList<Student> array = new ArrayList<Student>();
//后面的类可以不写 ,JDK7之后的新特性:泛型推断
Student s = new Student("caochao",40);
array.add(s);
Iterator <Student> it = array.iterator();
while(it.hasNext()){
Student s = it.next();
System.out.println(s.getName+"----"+s.getAge());
}
System.out.println("------");
}
}