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;}@Overridepublic 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;}//重写该类的排序规则@Overridepublic 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());}
感谢观看———