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());
}
}
程序运行结果为