List接口
List接口继承Collection接口;有如下特点
a、List中的元素是有顺序的;按加入顺序
b、List通常允许重复元素
c、List的实现类通常支持null元素
d、通过索引访问List对象容器中的元素
实现类ArrayList
查看API,常用方法
import java.util.ArrayList;
import java.util.List;
public class Demo1 {
public static void main(String[] args) {
//List可以存储object类,其中元素是有序的,可以通过下标访问list中的数据
List list=new ArrayList();//List为抽象接口,常用类ArrayList及LinkedList实现了List接口。向上转型
list.add("zhangsan");
list.add(13);
list.add("a");
list.add(false);
list.add(null);
System.out.println(list.toString().toUpperCase());
list.remove(2);//删除下标为2的元素
System.out.println(list.get(2));//查看下标2元素
System.out.println(list);
list.set(3, "李四");//将下标3的元素替换为”李四“
list.size();//返回数组当前元素个数
System.out.println(list);
}
}
泛型
允许在定义类、接口时指定类型形式参数,这个参数将在声明变量、创建对象时确定。
List<String> list1=new ArrayList<>();//定义ArrayList类的泛型,只能存储String类型的List数组
list1.add("wangwu");
list1.add("a");
System.out.println(list1);
LinkedList类
LinkedList是实现了双向链表功能的列表,它将列表中的每个对象放在独立的空间中,而每个空间中还保存有上一个和下一个链接的索引。
LinkedList不支持快速访问,如果要访问,则需要从头开始查找,并到n-1结束。 java中使用了Iterator供LinkedList及Set进行迭代
List<String> list=new LinkedList<>();
list.add("zhangsan");
list.add("wangwu");
list.add("lisi");
System.out.println(list);
Iterator<String> it=list.iterator();
while(it.hasNext()){
if(it.next().equals("wangwu")){
it.remove();//删除某个元素
}
}
System.out.println(list);//重新打印list数组
**LinkedList和ArrayList选择 ** ArrayList采用数组的方式存储对象,这种方式将对象放在连续的位置中,它有一个很大的缺点就是对它们进行删除和插入操作的时候非常麻烦。
如果列表需要快速存取,但不经常进行元素的插入和删除操作,那么选择ArrayList。如果需要对看列表进行频繁的插入和删除操作,则选择LinkedList
Set接口
a、Set类型容器中不能包含重复元素,如果需要元素重复,则必须同时重写hascode和equals方法。
b、元素可能有顺序,可能没有顺序。
c、因为元素没有顺序,则不能基于下标去访问,可以使用Iterator迭代
HashSet类
实现set接口,拥有set接口所有方法。
Set<String> set=new HashSet<>();//元素不能重复;元素可能有序,可能无序
set.add("张三");
set.add("李四");
set.add("wangwu");
set.add("wangwe");
System.out.println(set);
Iterator<String> it1=set.iterator();//Iterator提供hasNext(),next(),remove()方法
while(it1.hasNext()){
if(it1.next().equals("李四")){
it1.remove();//删除符合元素
}
}
System.out.println(set);
TreeSet类
实现Set接口,TreeSet中数组是按自然顺序排列的。
TreeSet<String> ts=new TreeSet<>();
ts.add("lisi");
ts.add("zhaosi");
ts.add("day");
ts.add("wanger");
System.out.println(ts);//按自然顺序进行排序。
Map接口
Map(映射)接口是java集合框架中不同于Collection接口的另一个重要接口,它对应的是在一种从键(key)到值(Value)的对应关系集合。
声明:Map<String,String> map=new HashMap<String,String>();//声明一个Map是两个String类型的HashMap类;
HashMap类
HashMap<Integer,String> hashMap=new HashMap<Integer,String>();
hashMap.put(10001, "张三");
hashMap.put(10002, "李四");
hashMap.put(10003, "王五");
hashMap.put(10001, "王二");
System.out.println(hashMap.size());
Set set=hashMap.entrySet();//返回此映射包含的set视图
Iterator<Integer> it=set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}