Java常见问题

这篇博客介绍了Java中List的反转方法Collections.reverse(),double到int的转换,Math.pow()求平方的用法,以及ArrayList与数组之间的转换。此外,还展示了如何对HashMap按值进行排序,包括升序和降序排列。这些内容涵盖了基本的Java数据操作和集合处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.反转List

使用Collections.reverse()

/**
     * Reverses the order of the elements in the specified list.<p>
     *
     * This method runs in linear time.
     *
     * @param  list the list whose elements are to be reversed.
     * @throws UnsupportedOperationException if the specified list or
     *         its list-iterator does not support the <tt>set</tt> operation.
     */
    @SuppressWarnings({"rawtypes", "unchecked"})
    public static void reverse(List<?> list) {
        int size = list.size();
        if (size < REVERSE_THRESHOLD || list instanceof RandomAccess) {
            for (int i=0, mid=size>>1, j=size-1; i<mid; i++, j--)
                swap(list, i, j);
        } else {
            // instead of using a raw type here, it's possible to capture
            // the wildcard but it will require a call to a supplementary
            // private method
            ListIterator fwd = list.listIterator();
            ListIterator rev = list.listIterator(size);
            for (int i=0, mid=list.size()>>1; i<mid; i++) {
                Object tmp = fwd.next();
                fwd.set(rev.previous());
                rev.set(tmp);
            }
        }
    }

2. double类型转int类型

double a = 2.333
int b = new Double(a).intValue();

3. 求平方

Math.pow()

 /**
     * Returns the value of the first argument raised to the power of the
     * second argument. 
     * Results must be semi-monotonic.
     *
     * @param   a   the base.
     * @param   b   the exponent.
     * @return  the value {@code a}<sup>{@code b}</sup>.
     */
    public static double pow(double a, double b) {
        return StrictMath.pow(a, b); // default impl. delegates to StrictMath
    }

第一个参数是底数,第二个参数是指数。pow(a,b)返回 ab

4. ArrayList和数组 相互转换

4.1 ArrayList —— 数组

List<String> list = new ArrayList<String>();
String[] arr = list.toArray(new String[list.size()]);

并不是所有类型的ArrayList都可以转化为数组:list.toArray(new int[])就是错误的,编译会报错。如果一定要进行这种类型的转换,可以用循环赋值的方法。

4.2 数组 —— ArrayList

String[] arr = new String[];
List<String> list = Arrays.asLink(arr);

5. HashMap哈希表按值排序

public class TestHashMapSort {

    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        map.put("a",1);
        map.put("b",2);
        map.put("c",3);
        map.put("d",4);

        //降序排序
        ArrayList<String> list = new ArrayList<>(map.keySet());
        Collections.sort(list, (a,b) -> map.get(b) - map.get(a));

        //升序排序
        ArrayList<String> list = new ArrayList<>(map.keySet());
        Collections.sort(list, (a,b) -> map.get(a) - map.get(b));

    }
}

创建HashMap的list,根据list中的排序,用排好序的去搜索HashMap。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值