java集合

Posted 爸爸去哪了2之熊猫三胞胎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java集合相关的知识,希望对你有一定的参考价值。

java集合

List:

import java.util.ArrayList;
import java.util.List;


public class ListTest 

    public static void main(String[] args) 
        List<String> books=new ArrayList<>();
        books.add("hello");
        books.add(" ");
        books.add("java");
        books.add(" !");
        System.out.println(books);
        books.add(1, " 我 ");
        System.out.println(books);
        for(int i=0;i<books.size();i++)
        System.out.println(books.get(i));
        
        books.remove(2);
        //删除
        System.out.println(books);
        //判断所在的位置
        System.out.println(books.indexOf("hello"));
        books.set(1, "你");
        //修改
        System.out.println(books);
        System.out.println(books.subList(1, 3));
        //截取


    

Map:
Object Put(Object key,Object value)如存在则更新,如不存在则添加

public class MapTest 
    public static void main(String[] args) 
        Map<Object, Object> map=new HashMap<>();
        map.put("a", "啊");
        map.put("b", "吧");
        map.put("c", "测");
        map.put("d", "的");
        System.out.println(map.put("e", "额"));
        System.out.println(map.put("d", "的"));
        System.out.println(map.put("d", "对"));
        System.out.println(map);
        System.out.println(map.containsKey("f"));
        System.out.println(map.containsValue("对"));

        for(Object key:map.keySet())
            System.out.println(key+"==>"+map.get(key));
        

        for(Object value:map.values())
            System.out.println("==>"+value);
        
        map.remove("a");
        System.out.println(map);
        map.clear();
        System.out.println(map);
    

Properties:
properties就是一个key、value都是String类型的Map

public class PropertiesTest 
    public static void main(String[] args) throws FileNotFoundException, IOException 
        Properties props = new Properties();
        props.setProperty("name", "屁股王");
        props.setProperty("password", "pgone");
        props.store(new FileOutputStream("a.ini"), "comment line");
        Properties props2 = new Properties();
        props2.setProperty("gender", "male");
        props2.load(new FileInputStream("a.ini"));
        System.out.println(props2);
    

本地缓存的应用:

public class ConcurrentHashMapTest 

    private static ConcurrentHashMap<String, String> cacheMap = new ConcurrentHashMap<>();

    /**
     * 获取缓存的对象
     * 
     * @param account
     * @return String
     */
    public static String getCache(String key, String value) 

        key = getCacheKey(key);
        // 如果缓冲中有该账号,则返回value
        if (cacheMap.containsKey(key)) 
            return cacheMap.get(key);
        
        // 如果缓存中没有该账号,把该帐号对象缓存到concurrentHashMap中
        initCache(key, value);
        return cacheMap.get(key);
    

    /**
     * 初始化缓存
     * 
     * @param key
     */
    private static void initCache(String key, String value) 
        // 一般是进行数据库查询,将查询的结果进行缓存
        cacheMap.put(key, value);
    

    /**
     * 拼接一个缓存key
     * 
     * @param key
     */
    private static String getCacheKey(String key) 
        return Thread.currentThread().getId() + "-" + key;
    

    /**
     * 移除缓存信息
     * 
     * @param key
     */
    public static void removeCache(String key) 
        cacheMap.remove(getCacheKey(key));
    

HashSet:
HashSet是Set接口的典型实现,大多数情况下使用Set集合都是HashSet的特点:1、顺序会发生变化,2、HashSet是不能同步的,3、集合元素的值可以为null

class A
    public boolean equals(Object obj)
        return true;
    

class B
    public int hashCode()
        return 1;
    

class C
    public int hashCode()
        return 2;
    
    public boolean equals(Object obj)
        return true;
    

public class HashSetTest 

    public static void main(String[] args) 
        HashSet<Object> books=new HashSet<>();
        books.add(new A());
        books.add(new A());
        books.add(new B());
        books.add(new B());
        books.add(new C());
        books.add(new C());
        System.out.println(books);
    

LinkedHashSet:
LinkedHashSet集合的元素与元素添加的顺序是一致的

public class LinkedHashSetTest 

    public static void main(String[] args) 
        LinkedHashSet<String> books=new LinkedHashSet<>();
        books.add("java");
        books.add("hello");
        System.out.println(books);
        books.remove("java");
        books.add("java");
        System.out.println(books);

    

TreeSetTest:

public class TreeSetTest 

    public static void main(String[] args) 
        TreeSet<String> nums=new TreeSet<>();
        nums.add("a");
        nums.add("abc");
        nums.add("d");
        nums.add("5");
        nums.add("16");
        nums.add("10");
        nums.add("-9");
        nums.add("57");
        nums.add("0");
        System.out.println(nums);
        System.out.println(nums.first());
        System.out.println(nums.last());
        System.out.println(nums.headSet("4"));
        //返回小于4的子集,不包含4
        System.out.println(nums.tailSet("5"));
        //返回大于5的子集,包含5
        System.out.println(nums.subSet("-3", "4"));
        //返回大于等于-3、小于4的子集
    

以上是关于java集合的主要内容,如果未能解决你的问题,请参考以下文章

java 遍历集合的时候对集合进行操作

Java集合问题

Java之集合

java集合总结

澳洲有个叫Ruby Rue的骚年,自称拥有世界上最漂亮的...屁股!据说男人看了,都把持不住啊~

java.util.ConcurrentModificationException 记一次坑