1.集合(实现功能较多,数据的集合)Collection
集合:不定长的同一类数据的集合
优点:可以自动扩容
*****数组不可以扩容
package com.neusoft.test7;
import java.util.Arrays;
public class Test1 {
public static void main(String[] args) {
//数组 同一数据类型的数据集合,定长
// TODO Auto-generated method stub
//数组装载多个数据
//数组是定长的 不能自动扩容
//***** 所谓的数组扩容其实就是 新分配一块内存地址
int[] a= {12,23,2,54,16};
System.out.println("old"+a.length);
System.out.println("old"+a);
int[] b=new int[5];//{0,0,0,0,0}
// System.out.println(b.length);
a=Arrays.copyOf(a, 10);
System.out.println("new"+a.length);
System.out.println("new"+a);
//数组中的拷贝方法 不能实现扩容
//a 是源数组 0 是源数组的开始位置 b 是目标数组 0 是目标数组的开始位置 5 是元素拷贝个数
// System.arraycopy(a, 0, b, 1, 4);//把a数组拷贝到b数组
// for(int n:a) {
// System.out.println(n);
// }
// for(int n:b) {
// System.out.println(n);
// }
}
}
package com.neusoft.test7;
import java.util.ArrayList;
import java.util.Collection;
public class Test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Collection c1=new ArrayList();//集合可以自动扩容
//因为:Object 是所有类的超类
//所以:Object 也是包装数据类型的超类
//因为:基本数据类型可以自动装箱
//所以:int 10------>integer 数据类型的10
//又因为:Object 也是包装数据类型的超类
//所以:integer 10 相当于变为了 Object类型的父类引用指向子类对象的形式
//在所以:10可以放到方法当中的参数当中
c1.add(10);//Object
c1.add(20);
c1.add(30);
c1.add(40);
c1.add(50);
c1.add(60);
c1.add(70);
c1.add(80);
c1.add(90);
System.out.println("c1.size()="+c1.size());//长度
Object[] o1arry=c1.toArray();
//遍历object 集合
for(Object o:o1arry) {
//在System.out.println当中输出一个类相当于自动调用类当中的toString方法
//因为有了父类引用指向子类对象的形式 Object o=new Integer();
//所以 调用toString方法时发生重写 实际调用的是Integer当中的toString方法 即输出了o
System.out.println(o);
}
Object o1=new Object();
//输出类名及地址值
System.out.println(o1);// 地址值
}
}
2.list 接口
优点:有序,可重复
package com.neusoft.test7;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//list 接口 <> 泛型 存取顺序一致------有序 可重复
List<String> list1=new ArrayList<String>();//父类的引用指向子类对象 :多态
list1.add("古天乐");//0 *********** 增加新元素
list1.add("渣渣辉");//1
list1.add("陈小春");//2
list1.add("刘烨");//3
list1.add("刘烨");
list1.add("刘烨");
list1.add("刘烨");
list1.add("孙红雷");//4
list1.add("林子聪");//5
list1.remove(1);//*********************删除
list1.set(1, "哈哈哈");//*******根据下标进行修改
System.out.println(list1.indexOf("哈哈哈"));//******查询 第一次出现的指定元素的索引
// System.out.println(list1);
//如何遍历集合
//1.list集合转为数组 再遍历数组
Object[] o=list1.toArray();//把集合变成数组
for(Object n:o) {
System.out.println(n);
}
System.out.println("*****************");
//2.使用迭代器(遍历器) 进行遍历输出 *****常用
Iterator<String> i1=list1.iterator();
while(i1.hasNext()) {//hasNext 判断但不移动指针
String a=i1.next();//next 移动指针
System.out.println(a);
}
//数组要有统一的数据类型
// Integer[] a=new Integer[10];//包装数据类型
// String[] b=new String[10];//引用数据类型
// a[0]=1;
// b[0]="aaa";
// System.out.println(a[0]);
// System.out.println(b[0]);
// //int ---->String
// b[0]=1+"";
// Object[] c=new Object[10];
// c[0]=111;
// c[1]="aaa";
// System.out.println(c[0]);
// System.out.println(c[1]);
}
}
package com.neusoft.test7;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class Test3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//list 接口 <> 泛型 存取顺序一致------有序 可重复
List<String> list1=new ArrayList<String>();//父类的引用指向子类对象:多态
list1.add("古天乐");//0 *********** 增加新元素
list1.add("渣渣辉");//1
list1.add("陈小春");//2
list1.add("刘烨");//3
list1.add("刘烨");
list1.add("刘烨");
list1.add("刘烨");
list1.add("孙红雷");//4
list1.add("林子聪");//5
list1.remove(1);//*********************删除
list1.set(1, "哈哈哈");//*******根据下标进行修改
System.out.println(list1.indexOf("哈哈哈"));//******查询 第一次出现的指定元素的索引
// System.out.println(list1);
//如何遍历集合
//1.list集合转为数组 再遍历数组
Object[] o=list1.toArray();//把集合变成数组
for(Object n:o) {
System.out.println(n);
}
System.out.println("*****************");
//2.使用迭代器(遍历器) 进行遍历输出 *****常用 listIterator与Iterator区别
ListIterator<String> i1=list1.listIterator();
while(i1.hasNext()) {//hasNext 判断但不移动指针
// list1.add("新增"); //当前更改异常 报错 ***a.在迭代器迭代的时候 不能通过list1来修改数据
// list1.remove(1); //当前更改异常 报错
String a=i1.next();//next 移动指针
if(a=="孙红雷") {
// i1.remove(); //b.使用迭代器来进行删除操作
i1.add("韩红"); //c.Iterator 没有add方法 在操作list集合时想要使用add方法需要使用ListIterator
}
System.out.println(a);
}
System.out.println(list1);
//数组要有统一的数据类型
// Integer[] a=new Integer[10];//包装数据类型
// String[] b=new String[10];//引用数据类型
// a[0]=1;
// b[0]="aaa";
// System.out.println(a[0]);
// System.out.println(b[0]);
// //int ---->String
// b[0]=1+"";
// Object[] c=new Object[10];
// c[0]=111;
// c[1]="aaa";
// System.out.println(c[0]);
// System.out.println(c[1]);
}
}
3.LinkedList(链表结构 双链表形式)
arraylist(数组结构) 初始值分配空间为10 如果装满的话则按照1.5倍进行扩容
arraylist 查找快 ,增删慢
linkedlist查找慢 ,增删快
package com.neusoft.test7;
import java.util.Iterator;
import java.util.LinkedList;
import javax.annotation.processing.SupportedSourceVersion;
public class Test4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedList list1=new LinkedList();
// list1.add("古天乐");
// list1.add("渣渣辉");
// list1.add("陈小春");
// list1.add("刘烨");
// list1.add("刘烨");
// list1.add("刘烨");
// list1.add("刘烨");
// list1.add("孙红雷");
// list1.add("林子聪");
list1.push("aaa");//push 入栈
list1.push("bbb");
list1.pop();//pop 出栈
list1.push("ccc");
list1.push("ddd");
list1.pop();
// System.out.println(list1.getLast());
// list1.pop();
// list1.pop();
Iterator i1=list1.iterator();
while(i1.hasNext()) {
System.out.println(i1.next());
}
}
}
//封装一个方法 用栈 实现 队列的功能
package com.neusoft.test7;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class Test5 {
LinkedList list1=new LinkedList();
LinkedList list2=new LinkedList();
public static void main(String[] args) {
// TODO Auto-generated method stub
Test5 t=new Test5();
t.put("aaa");
t.put("bbb");
t.put("ccc");
System.out.println(t.get());
System.out.println(t.get());
System.out.println(t.get());
System.out.println(t.get());
}
public void put (Object o) {//向list1栈 push元素
list1.push(o);
}
public Object get() {
for(int i=0;!isEmpty(list1);i++) {
list2.push(list1.pop());
}
if(!isEmpty(list2)) {
return list2.pop();
}else {
return "对不起,已经空了!!!";
}
}
//判断list 是否为空的方法 如果为空返回true 如果不为空返回false
public boolean isEmpty(List list) {
if(list.size()<=0) {
return true;//为空
}else {
return false;//不为空
}
}
}
4.Iterator接口方法(遍历集合)
5.Vector(与Arraylist相似)
*****也具有Iterator方法
package com.neusoft.test7;
import java.util.Enumeration;
import java.util.Vector;
public class Test6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Vector<String> v=new Vector<String>();
v.addElement("aaa");
v.addElement("bbb");
v.addElement("ccc");
Enumeration<String> e=v.elements();//枚举类
while(e.hasMoreElements()) {
String s=e.nextElement();
System.out.println(s);
}
}
}
6.Collections类(操作集合的类 ,该类中提供许多方法,集合的工具类)
collections与collection没有任何关系