Java学习之二

本文详细探讨了Java集合框架的使用方法,包括如何高效地操作对象组、理解不同集合类的区别、掌握HashSet、ArrayList等数据结构的特性及应用技巧。同时,通过实例展示了如何正确地遍历集合、初始化集合、转换数据结构并进行排序,以及如何避免常见的陷阱,提高代码质量和性能。

1.float类型输入参数要加一个f:

float minSupport = 0.4f;

 

类集接口:

Collection 能使你操作对象组,它位于类集层次结构的顶层
List 扩展Collection去处理序列(对象的列表)
Set 扩展Collection去处理集合,集合必须包含唯一元素
SortedSet 扩展Set去处理排序集合

 类集也使用Comparator, Iterator和ListIterator接口

collection的方法:

contain:是否包含类集元素

contianall:是否包含类集

 

hashset

hashset、arraylist保存的是指针。

添加元素的时候每次都要开辟内存。

    HashSet<Integer> can;
            for (Integer item : tran) {
                can = new HashSet<Integer>();
                can.add(item);
                if (!c1.contains(can)) {
                    c1.add(can);
                }

以下的写法导致c1保存最后一个,因为can指向c1里面的元素,can.clear()之后,c1的元素就为空。

    HashSet<Integer> can;
            for (Integer item : tran) {
                can.clear();
                can.add(item);
                if (!c1.contains(can)) {
                    c1.add(can);
                }

初始化:

HashSet<Integer> tran = new HashSet<Integer>(Arrays.asList(1, 3, 4));

 

循环的写法:

for (int i = 0; i < dataSet.size(); ++i) {}    

每次都要计算

for (int i = dataSet.size() - 1; i >= 0 ; --ii) {}  

不用每次计算,但是倒序

length = dataSet.size();

for (int i = 0; i < length; ++i) {}

不用每次计算,但是违反作用域最小原则

for (Iterator<Integer> it = list.iterator(); it.hasNext();) {it.hasNext();}

不用每次计算

for (HashSet<Integer> tran : dataSet) {}

简洁写法,jdk1.4向下不兼容

注意:不在循环内声明变量

 

hashmap遍历:

        HashMap<HashSet<Integer>, Integer> sk = new HashMap<HashSet<Integer>, Integer>();

        for (Map.Entry<HashSet<Integer>, Integer> tmp : sk.entrySet()) {}

hashset 转 arraylist:

  ArrayList<HashSet<Integer>> lk = new ArrayList<>();

  ArrayList<Integer> i1 = new ArrayList<>(lk.get(i));

arraylist排序:

  Collections.sort(i1);

  i1.sort(null);

hashset转数组:

  HashSet<Integer> l1 = lk.get(i);
      Integer[] i1 = (Integer[])l1.toArray(new Integer[0]);
      Arrays.sort(i1);

 

转载于:https://www.cnblogs.com/ywys/p/4784234.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值