Java学习过程中 遇到的技巧记录

1.判断两个数组相等

Arrays.equals(a, b)

若要求两个数组乱序相等可以先排序

Arrays.sort(arr1);
Arrays.sort(arr2);
return  Arrays.equals(arr1,arr2);

2.判断两个列表乱序相等

Collections.sort(one);
Collections.sort(two);
one.equals(two);

3.列表去重

List<String> myList = list.stream().distinct().collect(Collectors.toList());
// Set去重并保持原先顺序的两种方法
   public static void delRepeat(List<String> list) {
   	   //方法一
       List<String> listNew = new ArrayList<String>(new TreeSet<String>(list));
       //方法二
       List<String> listNew = new ArrayList<String>(new LinkedHashSet<String>(list));
   }

4.新建队列

Queue<Integer> queue = new LinkedList<>();//声明队列
queue.add(1);//添加数据
queue.offer(1);//添加数据
queue.poll();//输出队列
queue.peek();//输出队列但不删除
queue.remove();//输出队列
//在队列元素为空的情况下,remove() 方法会抛出NoSuchElementException异常,poll() 方法只会返回 null 

offer,add 区别:
一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。
这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常,而只是得到由 offer() 返回的 false。
poll,remove 区别:
remove() 和 poll() 方法都是从队列中删除第一个元素。remove() 的行为与 Collection 接口的版本相似, 但是新的 poll() 方法在用空集合调用时不是抛出异常,只是返回 null。因此新的方法更适合容易出现异常条件的情况。
peek,element区别:
element() 和 peek() 用于在队列的头部查询元素。与 remove() 方法类似,在队列为空时, element() 抛出一个异常,而 peek() 返回 null。
有序队列

Queue<Integer> queString = new PriorityQueue<>();//插入的数据会被排序

5.新建栈

Stack stack = new Stack();
Stack<String> stackString = new Stack<>();
stackString.pop();//输出元素,栈为空的时候会抛出异常
stackString.add();//添加元素
stackString.push();//添加元素
//add是继承自Vector的方法,且返回值类型是boolean。
//push是Stack自身的方法,返回值类型是参数类类型

6.新建Map

Map<String,String> map = new HashMap();//创建map
for(Map.Entry<String,String> entry : map.entrySet()){
	System.out.println(entry.getValue());
	System.out.println(entry.getKey());
}
//Map.Entry 是Map中的一个接口,他的用途是表示一个映射项(里面有Key和Value)
//Map.entrySet() 这个方法返回的是一个Set<Map.Entry<K,V>>表示一个映射项的Set。
//Map.Entry里有相应的getKey和getValue方法,即JavaBean,让我们能够从一个项中取出Key和Value。

7.java中Arrays.sort()的几种用法
降序排列
Arrays.sort(arr,Collections.reverseOrder());
需要注意的是 不能使用基本类型(int,double, char),如果是int型需要改成Integer,float要改成Float
8.初始化一个指定大小的list
List list = Arrays.asList(new String[10]);
9.计算二维数组a[i][j]的i和j
i = a.length
j = a[0].length
10.res.add(list)和res.add(new ArrayList (list) )的区别
res.add(list)为浅拷贝,后续list内容的变化会导致res的变化,在原来地址改变数据,内容肯定会被改变
res.add(new ArrayList(list))为深拷贝,对象中开辟一个新地址,存放的内容为list链表,所以后续不会被影响。
11.int转long Long型

Long l = (Long)5;

上述代码是错误的,因为Long是包装类,而int是值类型数据,两者是不能强转。
long l = (long)5;
Long l = new Long((long)5);
12.int转char

 char c = (char)i;//错误,会乱码

正确的方式:

char c = Character.forDigit(i,10);
char forDigit(int digit,int radix)
radix确定基数,确定是多少进制,从0到9,再从a到z(大小写不敏感),最少是二进制(MIN_RADIX),最多是三十六(10+26=36)进制(MAX_RADIX)。
char c = String.valueOf(i).charAt(0);
char c = (char)('0' + i);
char c = (char)(48+ i);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值