java容器常用方法、自定义排序

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());
        }

感谢观看———

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值