List接口中的ArrayList

List是接口,ArrayList是List的实现类(ArrayList不是继承List接口,是实现了List接口)List是接口,它是不可以被实例化的(接口是个抽象类),所以必须以它的实现类去实例化它。
ArrayList方法:
1.
创建一个集合list

List list = new ArrayList();

添加数据
语法:.add( )

//.add()添加数据
		list.add("张三");
		list.add(3);
		list.add(2.8);
		list.add('男');
		list.add("体育");
		list.add(12);
		list.add(90);

删除数据

		//list.remove(index)根据下标移除数据
		list.remove(5);
		//list.remove()删除括号里面的数据  返回结果为true或false
		boolean a = list.remove(2.8);
		System.out.println(a);

修改数据
语法:.set(index,数据)在指定位置替换数据


		//list.set(index,数据)在指定位置替换数据
		list.set(1,"李四");

查找数据
集合对象名.size()获取集合长度

		//第一种方法
		for(int i=0; i<list.size();i++) {
			//list.get(i);获取i位次的值
			System.out.print(list.get(i));
		}
		//第二种方法
			/*
			 * 增强版的for循环
			 * 语法
			 * for(数据类型  名字:集合名字){}
			 * 作用:把集合中的每一个数据都赋值给前面的数据类型
			 */
			System.out.println(" ");
			for(Object obj : list) {
				System.out.print(obj+" ");
				
			}
			
		//第三种
			/*
			 * 迭代器循环
			 */
			System.out.println(" ");
			Iterator iterator = list.iterator();//前面的Interator是类
			while(iterator.hasNext()){//iterator.hasNext()判断下一位还有没有值   有就接着循环
				Object obj = iterator.next();
				System.out.print(obj+" ");
				
			}

插入另一个集合中的数据
语法:.addAll([index],集合名)

public class testArrayList {
	public static void main(String[] args) {
		List list = new ArrayList();
		/*
		 * 添加
		 */
		list.add(4);
		list.add("可以");
		list.add('嗯');
		list.add(2.4);
		list.add(12);
		list.add("许昌");
		/*
		 * .addall(index,集合名)把数据传入另一个集合
		 */
		List qwe = new ArrayList();//声明一个集合
		qwe.add(3);
		qwe.add("你好");
		qwe.addAll(1,list);//表示从下标为1的位置开始插入list集合中的数据
		System.out.println(qwe);
	}
}

删除集合中的所有元素
语法:.clear()

//对象名.clear()删除集合中的所有元素
		qwe.clear();

ArrayList实例的浅拷贝(克隆)-----clone()
使用步骤:
1.在需要调用clone方法的对象上添加Cloneable接口
2.重写clone方法,在自己的clone方法中调用父类的clone方法,将返回值类型强转为本类类型,将当前的clone方法的修饰符改为public
3.在测试类中调用对象的clone方法
代码:

//父类
public class person implements Cloneable{
	private String name;
	private String age;

	

	public String getAge() {//传出数据
		return age;
	}

	public void setAge(String age) {//传入数据
		this.age = age;
	}

	
	public String getName() {//传出数据
		return name;
	}

	public void setName(String name) {//传入数据
		this.name = name;
	}

	@Override
	public person clone() throws CloneNotSupportedException {//protected要改为public才能让子类访问,返回值也要改为person(本类类型)
		
		return (person) super.clone();//调用父类中clone方法
	}

	@Override
	public String toString() {
		return "person [name=" + name + ", age=" + age + "]";
	}

}
//子类
package opp8;

public class testPerson {
	public static void main(String[] args) throws CloneNotSupportedException {
		person m = new person();
		m.setName("张三");
		m.setAge("男");
		
		Object d = m.clone();//调用clone方法复制一个与m一样的对象d,但是他们的的hash码不同即存放地址不同
	System.out.println(m+":"+m.hashCode());
	System.out.println(d+":"+d.hashCode());
		
	}

}


调用clone方法复制一个与m一样的对象d,但是他们的的hash码不同即存放地址不同
输出结果:在这里插入图片描述
这里父类中的Cloneable是个空接口
空接口的好处:
一个实现了某个接口,并不仅仅事件单的继承成员,更重要的是他的数据类型发生了变化,他成为了接口的实现子类我们可以用instanceof关键字判断该引用指向对象是否是接口的实现对象
**语法格式:**对象名 instanceof 接口名
eg:`

class A{
}

intreface qwe{
		}
A a = new A();
boolean d =a instanceof qwe;

判断集合中是否含有指定元素
语法:contains(Object o)若包含改元素返回true反之返回false


		qwe.contains(4);
		System.out.println(qwe.contains(4));

查找指定位置的元素
语法:.get( index)

        int a = (int) list.get(4);
		System.out.println(a);

返回此列表中指定元素的第一次出现的索引
若无则返回-1
语法:.indexOf(Object )

int b = list.indexOf(40);
		System.out.println(b);

判断集合中是否有元素
有元素返回false,无元素返回true
语法:.isEmpty()

boolean i = qwe.isEmpty();
		System.out.println(i);

以正确的顺序返回该列表中的元素的迭代器
语法:.iterator()

import java.util.ArrayList;
public class testArrayList {
	public static void main(String[] args) {
		List list = new ArrayList();
		/*
		 * 添加
		 */
		list.add(4);
		list.add("可以");
		list.add('嗯');
		list.add(2.4);
		list.add(12);
		list.add("许昌");
		System.out.println(list.iterator());
	}
};

输出结果:java.util.ArrayList$Itr@15db9742
返回列表中指定元素的最后一次出现的索引
若无则返回-1
语法:.lastIndexOf(Object o)

import java.util.ArrayList;
public class testArrayList {
	public static void main(String[] args) {
		List list = new ArrayList();
		/*
		 * 添加
		 */
		list.add(4);
		list.add("可以");
		list.add('嗯');
		list.add(2.4);
		list.add(12);
		list.add("许昌");
		System.out.println(list.lastIndexOf(2.4));
	}
};

返回列表中的列表迭代器(按适当的顺序)
语法:.listIterator()

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class testArrayList {
	public static void main(String[] args) {
	
		List qwe = new ArrayList();//声明一个集合
		qwe.add(3);
		qwe.add("你好");
		qwe.addAll(1,list);
		System.out.println(qwe.listIterator() );
	}
}

输出结果:java.util.ArrayList$ListItr@6d06d69c
从此列表中删除指定集合中包含的所有元素
语法:removeAll(集合名)

//删除集合中的所有元素
		qwe.removeAll(qwe); 
		System.out.println(qwe);

删除指定元素
语法:.removeif()

package opp8;

import java.util.ArrayList;
import java.util.List;

public class removeif extends person{
	public static void main(String[] args) {
		List list = new ArrayList();
			list.add("a");
			list.add("b");

			//删除元素a

			list.removeIf(next -> next.equals("a"));

			System.out.println(list.toString());

			}
	}

将该列表的每个元素替换为将该运算符应用于该元素的结果
语法:.replaceAll(UnaryOperator operator)

public class Test {
    public static void main(String args[]) {
        String Str = new String("www.google.com");

        System.out.print("匹配成功返回值 :" );
        System.out.println(Str.replaceAll("(.*)google(.*)", "runoob" ));
        System.out.print("匹配失败返回值 :" );
        System.out.println(Str.replaceAll("(.*)taobao(.*)", "runoob" ));
    }
}

输出结果:
匹配成功返回值 :runoob
匹配失败返回值 :www.google.com
仅保留此列表中包含在指定集合中的元素
语法:.retainAll(集合);

package opp8;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class testArrayList {
	public static void main(String[] args) {
		List list = new ArrayList();
		/*
		 * 添加
		 */
		list.add(4);
		list.add("可以");
		list.add('嗯');
		list.add(2.4);
		list.add(12);
		list.add("许昌");
		/*
		 * .addall(index,集合名)把数据传入另一个集合
		 */
		List qwe = new ArrayList();//声明一个集合
		qwe.add(3);
		qwe.add("你好");
		qwe.addAll(1,list);//把list集合中的数据传入qwe中
		qwe.retainAll(list);
		System.out.println(qwe);
		System.out.println(list.toString());
		//
		
	}
}

输出结果:
[4, 可以, 嗯, 2.4, 12, 许昌]
[4, 可以, 嗯, 2.4, 12, 许昌]
用指定的元素替换此列表中指定位置的元素
语法:.set( index, element)

package opp8;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class testArrayList {
	public static void main(String[] args) {
		List list = new ArrayList();
		/*
		 * 添加
		 */
		list.add(4);
		list.add("可以");
		list.add('嗯');
		list.add(2.4);
		list.add(12);
		list.add("许昌");
		/*
		 * .addall(index,集合名)把数据传入另一个集合
		 */
		List qwe = new ArrayList();//声明一个集合
		qwe.add(3);
		qwe.add("你好");
		qwe.addAll(1,list);//把list集合中的数据传入qwe中
		qwe.set(2, "天气");
		System.out.println(qwe.toString());
		
	}
}

输出结果:

[3, 4, 天气,, 2.4, 12, 许昌, 你好]

返回此列表中的元素数
语法:.size()

package opp8;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class testArrayList {
	public static void main(String[] args) {
		List list = new ArrayList();
		/*
		 * 添加
		 */
		list.add(4);
		list.add("可以");
		list.add('嗯');
		list.add(2.4);
		list.add(12);
		list.add("许昌");
		/*
		 * .addall(index,集合名)把数据传入另一个集合
		 */
		List qwe = new ArrayList();//声明一个集合
		qwe.add(3);
		qwe.add("你好");
		qwe.addAll(1,list);//把list集合中的数据传入qwe中
		int judge = qwe.size();
		System.out.println(judge);
	}
}

输出结果:

8

返回一个包含此集合中所有元素的数组
语法:.toArray();

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Spliterator;

public class testArrayList {
	public static void main(String[] args) {
		List list = new ArrayList();
		/*
		 * 添加
		 */
		list.add("你好");
		list.add(6);
		list.add(8);
		list.add(2.8);
		list.add(12);
		list.add('男');
	   //新建一个和list长度一样的数组
		String [] arr =new String[list.size()];
		//将List对象转换成数组
		Object[] obj = list.toArray();
	        for(Object i:obj) {
	            System.out.print(i+" ");
	        }
	     }
	  }

输出结果:

你好 6 8 2.8 12
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值