您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
【第13章:Java类集】_List接口
发布时间:2021-01-01 15:32:20编辑:雪饮阅读()
类集有点像是数组,但是数组受限于长度,定义的时候要先确定长度,这样总还是有点不方便。类集就可以解决这个问题。
类集操作-ArrayList
import java.util.ArrayList ;
import java.util.List ;
public class TestJava{
public static void main(String args[]){
List<String> allList=new ArrayList<String>();
allList.add("hello");
allList.add("kasumi");
System.out.println(allList);
}
}

List接口add操作还可以指定类集中所在索引位置
import java.util.ArrayList ;
import java.util.List ;
public class TestJava{
public static void main(String args[]){
List<String> allList=new ArrayList<String>();
allList.add("hello");
allList.add(0,"kasumi");
System.out.println(allList);
}
}
D:\>javac TestJava.java
D:\>java TestJava
[kasumi, hello]
LIST接口addAll操作可以将一个类集一次性添加
import java.util.ArrayList ;
import java.util.List ;
import java.util.Collection;
public class TestJava{
public static void main(String args[]){
List<String> allList=new ArrayList<String>();
Collection<String> allCollection=new ArrayList<String>();
allList.add("hello");
allList.add(0,"kasumi");
allCollection.add("hello");
allCollection.add("snowDrink");
allList.addAll(allCollection);
System.out.println(allList);
}
}
D:\>javac TestJava.java
D:\>java TestJava
[kasumi, hello, hello, snowDrink]
LST接口addAll也支持指定位置添加
import java.util.ArrayList ;
import java.util.List ;
import java.util.Collection;
public class TestJava{
public static void main(String args[]){
List<String> allList=new ArrayList<String>();
Collection<String> allCollection=new ArrayList<String>();
allList.add("hello");
allList.add(0,"kasumi");
allCollection.add("hello");
allCollection.add("snowDrink");
allList.addAll(0,allCollection);
System.out.println(allList);
}
}
D:\>javac TestJava.java
D:\>java TestJava
[hello, snowDrink, kasumi, hello]
LIST接口remove方法可以对类集的指定索引的元素进行删除
import java.util.ArrayList ;
import java.util.List ;
import java.util.Collection;
public class TestJava{
public static void main(String args[]){
List<String> allList=new ArrayList<String>();
Collection<String> allCollection=new ArrayList<String>();
allList.add("hello");
allList.add(0,"kasumi");
allList.remove(0);
System.out.println(allList);
}
}
D:\>javac TestJava.java
D:\>java TestJava
[hello]
List接口remove方法也可以直接通过元素具体值来删除一个元素
import java.util.ArrayList ;
import java.util.List ;
import java.util.Collection;
public class TestJava{
public static void main(String args[]){
List<String> allList=new ArrayList<String>();
Collection<String> allCollection=new ArrayList<String>();
allList.add("hello");
allList.add(0,"kasumi");
allList.remove("hello");
System.out.println(allList);
}
}
D:\>javac TestJava.java
D:\>java TestJava
[kasumi]
不过这种方式个人有点不喜欢
类集的遍历可以利用LIST接口的size方法和get方法实现
import java.util.ArrayList ;
import java.util.List ;
import java.util.Collection;
public class TestJava{
public static void main(String args[]){
List<String> allList=new ArrayList<String>();
Collection<String> allCollection=new ArrayList<String>();
allList.add("hello");
allList.add(0,"kasumi");
System.out.println("----------由前向后输出---------");
for(int i=0;i<allList.size();i++){
System.out.println(allList.get(i));
}
System.out.println("----------由后向前输出---------");
for(int i=allList.size()-1;i>=0;i--){
System.out.println(allList.get(i));
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
----------由前向后输出---------
kasumi
hello
----------由后向前输出---------
hello
kasumi
LIST接口提供toArray方法可以将LIST实例转换成一个真正的数组
import java.util.ArrayList ;
import java.util.List ;
import java.util.Collection;
public class TestJava{
public static void main(String args[]){
List<String> allList=new ArrayList<String>();
Collection<String> allCollection=new ArrayList<String>();
allList.add("hello");
allList.add(0,"kasumi");
String str[]=allList.toArray(new String[]{});
System.out.println("----------由前向后输出---------");
for(String x:str){
System.out.println(x);
}
System.out.println("----------由后向前输出---------");
for(int i=str.length-1;i>=0;i--){
System.out.println(str[i]);
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
----------由前向后输出---------
kasumi
hello
----------由后向前输出---------
hello
kasumi
在非foreach循环遍历时如下操作和上面的foreach操作相同效果,但是如下操作是更为严禁权威的
import java.util.ArrayList ;
import java.util.List ;
import java.util.Collection;
public class TestJava{
public static void main(String args[]){
List<String> allList=new ArrayList<String>();
Collection<String> allCollection=new ArrayList<String>();
allList.add("hello");
allList.add(0,"kasumi");
String str[]=allList.toArray(new String[]{});
System.out.println("----------由前向后输出---------");
for(String x:str){
System.out.println(x);
}
System.out.println("----------由后向前输出---------");
for(int i=str.length-1;i>=0;i--){
System.out.println((String)str[i]);
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
----------由前向后输出---------
kasumi
hello
----------由后向前输出---------
hello
kasumi
List的isEmpty、contains、subList、indexOf方法
isEmpty判断类集是否为空,contains用来判断一个类集中某个元素是否存在、subList用来截取类集元素、indexOf用于在List上获取一个值得类集中的某个元素的索引位置。
import java.util.ArrayList ;
import java.util.List ;
import java.util.Collection;
public class TestJava{
public static void main(String args[]){
List<String> allList=new ArrayList<String>();
System.out.println("集合操作前是否为空:"+allList.isEmpty());
allList.add("hello");
allList.add(0,"kasumi");
allList.add(0,"moniji");
allList.add(0,"snowDrink");
System.out.println("集合操作之后是否为空:"+allList.isEmpty());
System.out.println(allList.contains("hello")?"\"hello\"字符串存在!" : "\"hello\"字符串不存在!");
System.out.println("");
List<String> allSub=allList.subList(2,3);
for(int i=0;i<allSub.size();i++){
System.out.println(allSub.get(i));
}
System.out.println("momiji的位置:"+allList.indexOf("momiji"));
}
}
D:\>javac TestJava.java
D:\>java TestJava
集合操作前是否为空:true
集合操作之后是否为空:false
"hello"字符串存在!
kasumi
momiji的位置:-1
Vector接口类似于List接口
import java.util.ArrayList ;
import java.util.List ;
import java.util.Collection;
import java.util.Vector;
public class TestJava{
public static void main(String args[]){
List<String> allList=new Vector<String>();
allList.add("hello");
allList.add(0,"kasumi");
allList.add(0,"moniji");
allList.add(0,"snowDrink");
for(int i=0;i<allList.size();i++){
System.out.println(allList.get(i));
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
snowDrink
moniji
kasumi
hello
Vector接口有自己独立的添加元素的方法,只不过效果和List接口的add是相同的
Vector接口的自己的独立的添加元素的方法名是addElement,据说该方法是老版本jdk的,1.4还是1.5来着。
import java.util.Vector;
public class TestJava{
public static void main(String args[]){
Vector<String> allList=new Vector<String>();
allList.addElement("hello");
allList.addElement("kasumi");
allList.addElement("moniji");
allList.addElement("snowDrink");
for(int i=0;i<allList.size();i++){
System.out.println(allList.get(i));
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
hello
kasumi
moniji
snowDrink
关键字词:java,类集,List