单列集合是list和set,list的实现类有ArrayList和LinkedList,前者是数组实现,后者是链表实现。list和set,前者有序、可重复,后者无序不可重复。
1.单列集合
1.1. list
java.util.List
接口继承自Collection
接口,它的实现类包括ArrayList、LinkedList、Vector等
list接口的方法比如下面:
实例如下:
import java.util.ArrayList;
import java.util.List;
public class ListDemo
{
public static void main(String[] args)
{
List<Integer> a=new ArrayList<Integer>();
System.out.println("在集合尾部添加指定元素");
a.add(1);
a.add(2);
System.out.println(a);
}
}
//输出结果:在集合尾部添加指定元素
//[1, 2]
见第七行的List<Integer> a=new ArrayList<Integer>();这其实是子类的向上转型,当然也可以不用转型,直接ArrayList<Integer> a=new ArrayList<Integer>()这样,都可以。前者呢,优点是变量a可以引用任何list实现类的对象,比如LinkedList、Vector的对象,而不需要修改变量声明的类型,例如
a = new LinkedList<Integer>();
后者呢,变量a不仅可以调用父类的方法,还可以调用子类独有的方法。
明白了list接口的使用,那么list的实现类ArrayList、LinkedList、Vector等也差不多会用了。
1.2. set
java.util.Set
接口同样继承自Collection
接口,Set接口不同于List接口,它是抽象接口;它的实现类包括java.util.HashSet和java.util.LinkedHashSet等。
import java.util.HashSet;
public class SetDemo
{
public static void main(String[] args)
{
HashSet<Integer> a=new HashSet<Integer>();
a.add(12);
a.add(12);
a.add(34);
System.out.print(a);
}
}
//输出结果:[34, 12]
输入两个12,但是最终集合里只有一个12,说明自动过滤掉重复元素。
2.双列集合
map(映射)
java.util.Map,Map不同于List接口,它也是抽象接口;map接口的对象是键值对、关键字和值都是对象,关键字是唯一的,可以存相同的值,如果反复插入关键字,则新的替换旧的;
map的接口方法:
-
put(K key, V value)
:添加键值对。 -
get(Object key)
:通过键获取值。 -
remove(Object key)
:删除指定键的键值对。 -
containsKey(Object key)
:判断是否包含某键。 -
keySet()
:返回所有键的集合(Set<K>
)。 -
values()
:返回所有值的集合(Collection<V>
)。 -
entrySet()
:返回所有键值对的集合(Set<Entry<K, V>>
)。
import java.util.Map;
import java.util.HashMap;
public class MapDemo
{
public static void main(String[] args)
{
Map<String,Integer> a=new HashMap<>();
a.put("小明",12);
System.out.print(a);
}
}
//输出结果:{小明=12}