List和set的异同
list和set同样基于Collection 父类接口,属于同一级别(黑色标记为常用)
- Set下还有HashSet,LinkedHashSet,TreeSet
- List下还有ArrayList,Vector,LinkedList
用法相同之处
List以ArrayList 为例,set以HashSet 为例:
(1)添加元素
HashSet 类和ArrayList 提供类很多有用的方法,添加元素可以使用 add() 方法:
import java.util.ArrayList;
import java.util.HashSet;
public class Map3 {
public static void main(String[] args) {
// Set
HashSet<String> namset = new HashSet<String>();
// 或者
// Set<String> namset = new HashSet<String>();
namset.add("Google");
namset.add("Runoob");
namset.add("Taobao");
namset.add("Zhihu");
namset.add("Runoob"); // 重复的元素不会被添加
System.out.println(namset);
// List
ArrayList<String> namlist = new ArrayList<String>();
// 或者
// List<String> namlist = new ArrayList<String>();
namlist.add("Google");
namlist.add("Runoob");
namlist.add("Taobao");
namlist.add("Weibo");
System.out.println(namlist);
}
}
运行结果
[Google, Runoob, Zhihu, Taobao]
[Google, Runoob, Taobao, Weibo]
(2)删除元素
添加元素可以使用 remove() 方法:
import java.util.ArrayList;
import java.util.HashSet;
public class Map3 {
public static void main(String[] args) {
// Set
HashSet<String> namset = new HashSet<String>();
namset.add("Google");
namset.add("Runoob");
namset.add("Taobao");
namset.add("Zhihu");
namset.add("Runoob"); // 重复的元素不会被添加
// 删除某个元素直接填入名称如,"Taobao"
namset.remove("Taobao");
namset.remove("Zhihu");
// sites.clear(); 这个可以清除HashSet所有元素
System.out.println(namset);
// List
ArrayList<String> namlist = new ArrayList<String>();
namlist.add("Google");
namlist.add("Runoob");
namlist.add("Taobao");
namlist.add("Weibo");
// 这个其实就是数组,删除元素调用下标就可以了,数组下标从0开始
namlist.remove(2);
namlist.remove(2); // 注意,删除后大小会变化,这里我删掉后两个所以在用一次2
System.out.println(namlist);
}
}
运行结果
[Google, Runoob]
[Google, Runoob]
(3)大小计算
元素数量可以使用 size() 方法:
import java.util.ArrayList;
import java.util.HashSet;
public class Map3 {
public static void main(String[] args) {
// Set
HashSet<String> namset = new HashSet<String>();
//Set<String> namset = new HashSet<String>();
namset.add("Google");
namset.add("Runoob");
namset.add("Taobao");
namset.add("Zhihu");
System.out.println(namset.size());//4
// List
ArrayList<String> namlist = new ArrayList<String>();
//List<String> namlist = new ArrayList<String>();
namlist.add("Google");
namlist.add("Runoob");
namlist.add("Taobao");
namlist.add("Weibo");
System.out.println(namlist.size());//4
}
}
不同之处
1、List接口:是有序的,可以重复
2、set接口:是无序的,是唯一的 (不能重复元素),只允许存入一个null元素
(1)访问元素和判断元素是否存在
我们可以使用 contains() 方法来判断HashSet的元素是否存在于集合当中、ArrayList 中的元素可以使用 get() 方法:
import java.util.ArrayList;
import java.util.HashSet;
public class Map3 {
public static void main(String[] args) {
// Set
HashSet<String> namset = new HashSet<String>();
// Set<String> namset = new HashSet<String>();
namset.add("Google");
namset.add("Runoob");
namset.add("Taobao");
namset.add("Zhihu");
System.out.println(namset.contains("Google"));//会返回 真或假
// List
ArrayList<String> namlist = new ArrayList<String>();
//List<String> namlist = new ArrayList<String>();
namlist.add("Google");
namlist.add("Runoob");
namlist.add("Taobao");
namlist.add("Weibo");
System.out.println(namlist.get(1));// Runoob
}
}
(2)迭代、和 ArrayList中修改元素
import java.util.ArrayList;
import java.util.HashSet;
public class Map3 {
public static void main(String[] args) {
// Set
HashSet<String> namset = new HashSet<String>();
//Set<String> namset = new HashSet<String>();
namset.add("Google");
namset.add("Runoob");
namset.add("Taobao");
namset.add("Zhihu");
for (String i : namset) {
System.out.println(i);
}
// List
ArrayList<String> namlist = new ArrayList<String>();
// List<String> namlist = new ArrayList<String>();
namlist.add("Google");
namlist.add("Runoob");
namlist.add("Taobao");
namlist.add("Weibo");
namlist.set(2, "aaaaaa"); // 第一个参数为索引位置,第二个为要修改的值
for (String i : namlist) {
System.out.println(i);
}
for (int i = 0; i < namlist.size(); i++) {
System.out.println(namlist.get(i));
}
}
}
补
Java ArrayList 方法
Java ArrayList 常用方法列表如下:
方法 | 描述 |
---|---|
add() | 将元素插入到指定位置的 arraylist 中 |
addAll() | 添加集合中的所有元素到 arraylist 中 |
clear() | 删除 arraylist 中的所有元素 |
clone() | 复制一份 arraylist |
contains() | 判断元素是否在 arraylist |
get() | 通过索引值获取 arraylist 中的元素 |
indexOf() | 返回 arraylist 中元素的索引值 |
removeAll() | 删除存在于指定集合中的 arraylist 里的所有元素 |
remove() | 删除 arraylist 里的单个元素 |
size() | 返回 arraylist 里元素数量 |
isEmpty() | 判断 arraylist 是否为空 |
subList() | 截取部分 arraylist 的元素 |
set() | 替换 arraylist 中指定索引的元素 |
sort() | 对 arraylist 元素进行排序 |
toArray() | 将 arraylist 转换为数组 |
toString() | 将 arraylist 转换为字符串 |
ensureCapacity() | 设置指定容量大小的 arraylist |
lastIndexOf() | 返回指定元素在 arraylist 中最后一次出现的位置 |
retainAll() | 保留 arraylist 中在指定集合中也存在的那些元素 |
containsAll() | 查看 arraylist 是否包含指定集合中的所有元素 |
trimToSize() | 将 arraylist 中的容量调整为数组中的元素个数 |
removeRange() | 删除 arraylist 中指定索引之间存在的元素 |
replaceAll() | 将给定的操作内容替换掉数组中每一个元素 |
removeIf() | 删除所有满足特定条件的 arraylist 元素 |
forEach() | 遍历 arraylist 中每一个元素并执行特定操作 |