List 与 ArrayList() 与 for each

1.为什么一般都使用 List list = new ArrayList() ,而不用 ArrayList alist = new ArrayList()呢?

问题就在于List有多个实现类,如
LinkedList或者Vector等等,现在你用的是ArrayList,也许哪一天你需要换成其它的实现类呢?,
这时你只要改变这一行就行了:List list = new LinkedList(); 其它使用了list地方的代码根本不需要改动。
假设你开始用 ArrayListalist = new ArrayList(), 这下你有的改了,特别是如果你使用了 ArrayList特有的方法和属性。
,如果没有特别需求的话,最好使用List list = new LinkedList(); ,便于程序代码的重构. 这就是面向接口编程的好处。

 

2.List<String> list = new ArrayList<String>();两个String的作用分别是什么?  有什么区别?

作用是一样的,采用泛型可以约束接收数据,在编译期就可以判断存入的数据是否符合设定的类型,如你这里泛型声明为String类型,则List添加元素时,只能添加String类型的数据,如果添加其他类型的数据,在编译期就会告警提示。
加2个String,二者区别是什么,其实通过楼主你的疑问也可以看出jdk这种语法设计是不合理的,既然作用是一样的,为什么要声明2个,这不是多些一举吗,所以从JDK7开始,对此语法进行了调整,支持并建议使用“List<String> list = new ArrayList<>()”这种写法。

 

3.for-each循环是Java相比C语言中的for循环拓展而来的一种新的遍历数组的循环方式,
其相对于一般的for循环更方便,而且更易查找数组内的变量,他与我们常见的for循环不同的是,
for循环是通过循环控制变量,访问数组中的不同位置处的元素进行遍历,
而for-each循环是通过应该与数组内元素类型相同的变量进行遍历,
直接得到数组内从下标为0的位置至最后一个位置的元素的元素值,便于数组内元素的查找,
比如在数组内我只需要找到是否有某个元素,而不用返回元素对应的数组下标是,for-each循环是一个不错的选择。

package List;

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

public class List1 {


	
	
	public static void main(String[] args) {
		//List集合定义泛型未String 集合
		List<String> list=new ArrayList();
		String b="B";
		
		//添加元素
		list.add("A");
		list.add(b);
		list.add("C");
		list.add("B");
		list.add("D");
		list.add("E");
		
	    //1.输出集合元素个数
		System.out.println("1.输出集合元素个数:"+list.size());
		
		
		//2.1.利用for each语句遍历集合
		System.out.print("2.集合包含元素");
		for(String str:list){
			System.out.print(str);
		}
		System.out.println();
		
		//2.2输出数组
		System.out.println(list);
		
		//2.3输出第三个元素
		System.out.println(list.get(2));
		
		//3.利用 indexOf 和 lastIndexOf 查找元素 B
	    System.out.println("3.第一个元素B在第"+(list.indexOf("B")+1)+"位");  
	    System.out.println("   最后一个元素B在第"+(list.lastIndexOf("B")+1)+"位");  
	    
	    //4.1.删除集合第一个元素 B
	    list.remove("B");
	    
	    //4.2.判断集合是否包含元素 B
	    System.out.println("4.集合是否包含元素B:"+list.contains(b));
	    
	    //4.3 删除集合第三个元素 B(4.1已移除一个元素)
	    list.remove(2);
	    
	    //4.4.判断集合此时是否包含元素 B
	    System.out.println("   集合是否包含元素B:"+list.contains(b));
	    
		//5.1.将集合第二个元素替换成 B
		list.set(1,"B");
	    
		//5.2.利用for each语句遍历集合
		System.out.print("5.集合包含元素");
		for(String str:list){
			System.out.print(str);
		}
		System.out.println("  集合元素个数:"+list.size());
		
		//6.1清空集合
		list.clear();
		
		//6.2判断集合是否为空
		System.out.println("6.集合是否为空"+list.isEmpty());
	    
		

	}

}

程序运行结果为

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值