java笔记2.27,集合2

LinkedList特有方法

对首尾元素的增删改查

package TempAndTest;

import java.util.ArrayList;

import java.util.LinkedList;
import java.util.List;

public class test1 {
    public static void main(String[] args){
       LinkedList<String> l1=new LinkedList<String>();
       l1.add("a"); l1.add("b");l1.add("c");
       System.out.println(l1);
       l1.addFirst("开头加入");
       l1.addLast("末尾加入");
       System.out.println(l1);

       System.out.println("获得末尾"+l1.getLast());
       System.out.println("获得开头"+l1.getFirst());
       System.out.println(l1);

        System.out.println("删除末尾"+l1.removeLast());
        System.out.println("删除开头"+l1.removeFirst());
        System.out.println(l1);
    }
}

set集合,HashSet

记住,set和list,还有collection都是接口,他们是没有构造的!
但是可以根据多态来实例化
set集合不存储相同数据,set集合存储顺序无法保持,hashset不能使用普通for遍历

怎么实现不存储相同数据?通过比较哈希值来实现不存储相同的数据
相同字符串具有相同的HashCode,如果HashCode相同,再比较字符串是否相同

package TempAndTest;
import java.util.*;
public class test1 {
    public static void main(String[] args) {
        Set<String> s1=new HashSet<String>();
        s1.add("2");s1.add("3");s1.add("1");
        s1.add("1");
        // 迭代器遍历
        Iterator t=s1.iterator();
        while (t.hasNext())
        {
            System.out.print(t.next()+"  ");
        }
        System.out.println();
        // 增强for循环遍历
        for (String s:s1)
        {
            System.out.print(s+"  ");
        }
    }
}

哈希值HashCode

默认情况下,使用object中的hashCode()方法
不可能出现相同的hashcode
除非重写了hashCode方法
比如String类重写了hashcode方法

package TempAndTest;
import java.util.*;
public class test1 {
    public static void main(String[] args) {
        // 不同对象的hashcode是不同的
        test t1=new test();
        test t2=new test();
        System.out.println(t1.hashCode());
        System.out.println(t2.hashCode());
        // 固定字符串其实也是对象
        System.out.println("嗨嗨嗨".hashCode());
        System.out.println("嗨嗨嗨".hashCode());
        System.out.println("我们也不一样".hashCode());
        // String类重写了hashCode方法
    }
}
class test
{
    int a;
}

LinkedHashSet集合

相比于HashSet集合保证了存取顺序

public class test1 {
    public static void main(String[] args) {
        LinkedHashSet<String>s=new LinkedHashSet<>();
        s.add("aa");s.add("bb");s.add("ac");s.add("1.我是有序的");
        System.out.println(s);
    }
}

TreeSet集合

特点是按照一定顺序排列,排列方式取决于所使用构造方法,取决于所使用的比较器
默认是自然排序,A~Z排序

public class test1 {
    public static void main(String[] args) {
        // 自然排序
      Set<String> s=new TreeSet<String>();
      s.add("c");s.add("A");s.add("B");
      System.out.println(s);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值