Java-集合-list

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 list1=new ArrayList();//父类的引用指向子类对象  :多态

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 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 list1=new ArrayList();//父类的引用指向子类对象:多态

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 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 v=new Vector();

v.addElement("aaa");

v.addElement("bbb");

v.addElement("ccc");

Enumeration e=v.elements();//枚举类

while(e.hasMoreElements()) {

String s=e.nextElement();

System.out.println(s);

}

}

}


6.Collections类(操作集合的类 ,该类中提供许多方法,集合的工具类)

 collections与collection没有任何关系

你可能感兴趣的:(Java-集合-list)