List
本质上是一个容器,用来存储数据。
因为其为一个接口,故我们不能直接new。
而List常用的实现类为ArrayList和LinkedList.
ArrayList底层:数组
LinkedList底层:链表
常用方法:
- add(元素):新增一个元素;
- add(下标,元素):在指定下标插入元素;
- size():获取当前元素个数;
- get(下标):获取指定下标的元素;
- remove(下标):移除指定下标的元素;
- contains(元素):查询容器是否包含指定元素;
遍历:(for循环遍历就不写了)
Iterator it=list.iterator(); while(it.hasNext()){ System.out.println(it.next()); }
自定义排序
//先在类中写好排序方式,方法使用的是冒泡排序
class T implements Comparable<T>{
public int t;
public T(int t){
this.t = t;
}
@Override
public int compareTo(T o) {
//返回正数:换位置
//返回负数:不换位置
//返回0:表示相等
return o.t-t;
}
}
//
public static void main(String[] args) {
List<T> list = new ArrayList<>();
list.add(new T(5));
list.add(new T(3));
list.add(new T(4));
//通过调用Collections方法进行排序
Collections.sort(list);
for(T t:list)
System.out.println(t.t);
}
Set
将元素默认按从小到大进行排序,元素唯一。
常用实现类有HashSet。
HashSet底层:Hash表。
常用方法:
- add(元素)::插入一个元素;
- size():获取元素个数;
- remove(元素):移除该元素;
- contains(元素):查询是否包含该元素;
遍历:
for(int i=0;i<set.size();i++){
System.out.println(set.toArray()[i]);
}
或
for(int t:set){
System.out.println(t);
}
自动排序容器如何自定义排序方法
//创建一个类继承Comparable接口
class T implements Comparable<T>{
public int id;
public T(int id) {
this.id = id;
}
//重写该类的排序规则
@Override
public int compareTo(T o) {
return o.id-this.id;
}
}
public static void main(String[] args) {
Set<T> set=new HashSet<T>();
set.add(new T(1));
set.add(new T(3));
set.add(new T(2));
//如何获取?
//获取是一个对象,需要进行强转!!!
T o = (T)set.toArray()[0];
System.out.println(o.id);
}
Map
元素是成对存在的,每个元素由键与值两部分组成,通过键可以找对所对应的值。
常用为HashMap,底层为数组+链表or数组+红黑树。
常用方法:
- put(key,value):存放一个数据;
- get(key):通过key获取其value(若无返回null);
- remove(key):通过key移除该键值对;
遍历方式:
//获取key集合,再遍历获取value
HashMap<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);
Set<String> strings = map.keySet();
for (String s : strings) {
System.out.println(s+" "+map.get(s));
}
方式二
//通过增强for遍历
HashMap<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.put("C", 3);
for(Map.Entry<String, Integer> entry:map.entrySet()){
System.out.println(entry.getKey() + " " + entry.getValue());
}
感谢观看———