Java List与Set集合

Java List与Set集合

开发工具与关键技术:My Eclipse 10, jdk¬7 Update 80
作者:邓高发
撰写时间:2019年5月5日

Java常用的集合接口有List、Set。
List常用的实现类有ArrayList、Vector、LinkedList。
List集合为有序的,可重复的集合,每一个元素都有一个索引值,可以根据索引取想要的值,允许插入null值,可以插入重复的元素,插入的位置为从0开始。
下面以ArrayList为例
ArrayList:每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。ArrayList为线程不同步,是线程不安全的。
常用构造方法为:
ArrayList():构造一个初始容量为10的空集合列表。
示例代码:
List strings = new ArrayList<>(10);
其中<>内为指定该集合存放的数据类型,该集合只能存放对应数据类型的值否则引发异常。
常用的方法为:
add(E e):将指定的元素插入到该列表的末尾处,返回值为boolean型。
add(int index,E element)将指定元素插入到指定的索引位置,返回值为空。
addAll(int index, Collection<? extends E> c):将一个子集合列表插入到该集合列表中,可指 定、插入的位置,默认插入为末尾,返回值为boolean。
clear():移除这个集合列表的所有元素,返回值为空。
isEmpty():检测此集合列表是否为空,为空返回true,返回值为boolean。
contains(Object o):检测此集合列表是否包含指定的元素,有则返回true,返回值为boolean。
get(int index):返回指定索引位置的元素。
indexOf(Object o):返回指定元素在该集合列表第一次出现的索引位置,如果没有则返回-1。返回值为int。
lastIndexOf(Object o):返回指定元素在该集合列表最后一次出现的索引位置,如果没有则返回-1。返回值为int。
remove(int index):移除此集合列表指定索引位置的元素。
remove(Object o):移除此集合列表中首次出现的指定元素,,返回值为boolean。
set(int index,E element):用指定的元素替代此集合列表中指定位置上的元素。
size():返回集合中元素的个数。
示例代码:
strings.add(“str1”);
strings.add(“str2”);
strings.add(“str3”);
strings.add(“str4”);
strings.add(0,“str1”);//将str1插入到第一个位置
strings.add(null);
List string1 = new ArrayList<>();//创建一个新的集合列表
string1.add(“str5”);
strings.addAll(string1);
//通过Iterator迭代器输出整个集合列表
Iterator iterator = strings.iterator();
while (iterator.hasNext()) {
String string = (String) iterator.next();
System.out.println(string);
}
strings.clear();//清空此集合列表
System.out.println(strings.isEmpty());//判断此集合列表是否为空
输出结果如下图:
在这里插入图片描述
把上面代码注释。
System.out.println(strings.contains(“str1”));//检查此列表集合是否包含"str1"字符串 System.out.println(strings.get(6));//获取索引位置6的元素
System.out.println(strings.indexOf(“str5”));//获取str5的索引位置
System.out.println(strings.lastIndexOf(“str1”));//获取str1最后出现的索引位置
System.out.println(strings.remove(“str1”));//从此集合列表移除str1
System.out.println(“移除”+strings. remove(0));//从此集合列表移除索引为0的元素 strings.set(0, “str1”);//把索引0位置的元素设置为"str1"
System.out.println(strings.size());//获取此集合列表的大小
System.out.println(strings);
控制台输出结果如下图:
在这里插入图片描述
Set接口常用的实现类有HashSet,TreeSet。
Set集合不允许放入相同的元素,Set集合里元素的排列是无序的,因此它没有与索引有关的方法,其他方法与基本与List接口一致。
构造方法:
Set set = new HashSet();
set.add(“a”);
set.add(“a”);
set.add(“b”);
set.add(“c”);
System.out.println(set.toString());
控制台输出结果如下图:
在这里插入图片描述
HashSet还有一个 LinkedHashSet的子类它能依据元素的插入顺序来进行排列。
示例如下
Set set1 = new LinkedHashSet();
set1.add(“a”);
set1.add(“b”);
set1.add(“c”);
System.out.println(set1.toString());
控制台输出结果如下图:
在这里插入图片描述
TreeSet实现类:使用元素的自然顺序对元素进行排序,对比HashSet多了如下几个方法
first():返回此 set 中当前第一个(最低)元素。
last() :返回此 set 中当前最后一个(最高)元素。 floor(E e) :返回此 set 中小于等于给定元素的最大元素;如果不存在这样的元素,则返回 null。
floor() 返回此 set 中小于等于给定元素的最大元素;如果不存 在这样的元素,则返回 null。 E higher() 返回此 set 中严格大于给定元素的最小元素;如果不存 在这样的元素,则返回 null。
lower() 返回此 set 中严格小于给定元素的最大元素;如果不存 在这样的元素,则返回 null。 ceiling() 返回此 set 中大于等于给定元素的最小元素;如果不存 在这样的元素,则返回 null。
headSet() 返回此 set 的部分视图,其元素严格小于给定的元素。
tailSet() 返回此 set 的部分视图,其元素大于等于元素。
subSet(E fromElement, E toElement) 返回此 set 的部分视图,其元素从(包括)到 toElement(不包括)。
示例代码如下:
TreeSet set2 = new TreeSet();
set2.add(5);
set2.add(3);
set2.add(2);
set2.add(1);
System.out.println(set2);
System.out.println(set2.first());//最小值
System.out.println(set2.last());//最大值
System.out.println(set2.floor(4));//小于等于4的最大值
System.out.println(set2.higher(1));//大于1的最小值
System.out.println(set2.lower(2));//小于2的最大值
System.out.println(set2.ceiling(1));//大于等于1的最小值
System.out.println(set2.headSet(5));//小于5的所有值
System.out.println(set2.tailSet(4));//大于等于4的所有值
System.out.println(set2.subSet(2,3));//大于等于2小于3的所有值

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xj735162941/article/details/89923542