查找网站空间商,建设银行网站能不能注销卡,详情页模板 套用,茂名网站建设方案推广关于数组的一些用法
1. 数组排序
Java中可以使用Arrays类的sort()方法对数组进行排序。
Arrays.sort(arr); // 调用Arrays类的sort()方法对数组进行排序 关于ArrayList的用法
1. 将几个零散的数值转化为ArrayList
Arrays.asList(nums[i], nums[left], nums[right])
Array…关于数组的一些用法
1. 数组排序
Java中可以使用Arrays类的sort()方法对数组进行排序。
Arrays.sort(arr); // 调用Arrays类的sort()方法对数组进行排序 关于ArrayList的用法
1. 将几个零散的数值转化为ArrayList
Arrays.asList(nums[i], nums[left], nums[right])
Arrays.asList() 方法返回的并不是 java.util.ArrayList 而是 java.util.Arrays 的一个内部类
2. 数组转集合
有坑
Arrays.asList() public static void main(String[] args) {String[] strs {aaa, bbb, ccc};ListString list Arrays.asList(strs);System.out.println(list); // [aaa, bbb, ccc]int[] arr1 {1,2,3};Listint[] ints Arrays.asList(arr1);System.out.println(ints); // [[I4554617c]Integer[] arr2 {4,5,6};ListInteger list1 Arrays.asList(arr2);System.out.println(list1); // [4, 5, 6]list1.add(7); // 报错java.lang.UnsupportedOperationException}
第一点Arrays.asList()是泛型方法传递的数组必须是对象数组而不是基本类型
第二点当传入一个基本数据类型数组时Arrays.asList() 的真正得到的参数就不是数组中的元素而是数组对象本身此时 List 的唯一元素就是这个数组这也就解释了上面的代码
第三点使用集合的修改方法: add()、remove()、clear()会抛出异常。Arrays.asList() 方法返回的并不是 java.util.ArrayList 而是 java.util.Arrays 的一个内部类,这个内部类并没有实现集合的修改方法或者说并没有重写这些方法。 那我们如何正确的将数组转换为 ArrayList?
1、手动实现工具类: 就是遍历数组然后一个个add();
2. 最简便的方法
List list new ArrayList(Arrays.asList(a, b, c)) 3. stream流
Integer [] myArray { 1, 2, 3 };
List myList Arrays.stream(myArray).collect(Collectors.toList());
//基本类型也可以实现转换依赖boxed的装箱操作
int [] myArray2 { 1, 2, 3 };
List myList Arrays.stream(myArray2).boxed().collect(Collectors.toList());3. 集合转数组
使用集合转数组的方法必须使用集合的 toArray(T[] array)传入的是类型完全一致、长度为 0 的空数组toArray(T[] array) 方法的参数是一个泛型数组如果 toArray 方法中没有传递任何参数的话返回的是 Object类 型数组。
String [] s new String[]{dog, lazy, a, over, jumps, fox, brown, quick, A
};
ListString list Arrays.asList(s);
Collections.reverse(list);
//没有指定类型的话会报错
slist.toArray(new String[0]);由于 JVM 优化new String[0]作为Collection.toArray()方法的参数现在使用更好new String[0]就是起一个模板的作用指定了返回数组的类型0 是为了节省空间因为它只是为了说明返回的类型 关于String的一些用法
String 和 char数组互转
String s helloworld
char[] ch s.toCharArray();char[] charArray {H, e, l, l, o, , W, o, r, l, d};
String str new String(charArray);
System.out.println(str); // 输出: Hello World
1. 使用 String 构造函数
char[] charArray {H, e, l, l, o};
String str new String(charArray);
System.out.println(str); // 输出: Hello2. 使用 String 类的 valueOf() 静态方法
char[] charArray {H, e, l, l, o};
String str String.valueOf(charArray);
System.out.println(str); // 输出: HelloString 转为int
public class Main {public static void main(String[] args) {String str 123;// 使用 parseInt() 方法int intValue1 Integer.parseInt(str);System.out.println(intValue1); // Output: 123// 使用 valueOf() 方法int intValue2 Integer.valueOf(str);System.out.println(intValue2); // Output: 123}
}这两种方法的区别在于
parseInt() 方法将字符串转换为int基本类型。valueOf() 方法将字符串转换为Integer对象然后通过自动拆箱将其转换为int类型。
charAt() 获取指定字符
String str This is CSDN;// prints character at 1st location
System.out.println(str.charAt(0));// prints character at ths last location
System.out.println(str.charAt(str.length()-1));trim() 去除字符串首位的空格
String Str hello ;
System.out.print(原始值 : );
System.out.println( Str );System.out.print(删除头尾空白 : );
System.out.println( Str.trim() );split() 分割字符串
String str2018,text,今天;
//单个分隔符用引号括起来即可
String[] data str.split(,);
for(int i0;i data.length;i){System.out.println(data[i]);
}StringBuffer
StringBuffer s new StringBuffer(); //空的对象StringBuffer s1 new StringBuffer(abc); //有内容的对象
StringBuffer常用的几个方法 1、append 连接字符串 2、deleteCharAtint index :删除指定位置的字符之后变成一个心得字符串 3、insertint index,字符串 将字符串插入到指定索引值处
关于map的一些用法
MapCharacter, Integer map new HashMap();map.containsKey(c2);map.getOrDefault(c1,0);map.put(c1, map.getOrDefault(c1,0) 1);
遍历map的方法
1. entrySet
entrySet是java中 键-值对的集合Set里面的类型是Map.Entry一般可以通过map.entrySet()得到。
entrySet实现了Set接口里面存放的是键值对。一个K对应一个V。
System.out.println(通过Map.entrySet遍历key和value);SetMap.EntryString, String entryseSetmap.entrySet();for (Map.EntryString, String entry:entryseSet) {System.out.println(entry.getKey(),entry.getValue());}// 即通过getKey得到KgetValue得到V。2. keySet
还有一种是keySet, keySet是键的集合Set里面的类型即key的类型
System.out.println(通过Map.keySet遍历key和value);SetString set map.keySet();for (String s:set) {System.out.println(s,map.get(s));}3. 通过Map.values()遍历所有的value但不能遍历key
//第四种
System.out.println(通过Map.values()遍历所有的value但不能遍历key);
for (String v : map.values()) {System.out.println(value v);
}关于set的一些用法
SetString testSet new HashSetString();testSet.add(Java);set1.contains(i) // 很好用 效率高数组和Set互转
常用方法 数组转为Set 由于nums1是int[ ] 居然会报错!
SetInteger set1 new HashSet(Arrays.asList(nums1)); 现在知道为什么会报错了 因为Set只能存储对象类型的参数
注意
数组转为set 就老老实实遍历吧
SetInteger set1 new HashSet();
for(int num : nums1){set1.add(num);
}
set 转为数组 也就老老实实一个个填吧
SetInteger res new HashSet();
int[] result new int[res.size()];
int j 0;
for(Integer num : res){result[j] num;
}当然可以使用更加高级的stream流
resSet.stream().mapToInt(x - x).toArray(); Java实现栈和队列
1. 实现栈
StackInteger stack new Stack();push(); // 入栈pop(); // 出栈peek(); // 返回栈顶元素isEmpty(); // 判断是否为空size(); // 返回大小此外双端队列也可以实现栈DequeCharacter deque new LinkedList();
ArrayDequeCharacter deque new ArrayDeque();
//ArrayDeque会比LinkedList在除了删除元素这一点外会快一点
//事实上Deque 还提供有 push() 和 pop() 等其他方法可用于模拟栈。push(); // 入栈pop(); // 出栈peek(); // 返回栈顶元素isEmpty(); // 判断是否为空size(); // 返回大小
2.实现队列
QueueInteger queue new LinkedList();queue.offer(); // 入队queue.poll(); // 出队queue.peek(); // 返回头元素queue.isEmpty(); // 判断是否为空queue.size(); // 返回大小
优先级队列实现大根堆和小根堆 (比如一些问题 求第k大的数 果断使用大根堆来处理)
Comparator接口说明:返回负数形参中第一个参数排在前面返回正数形参中第二个参数排在前面// 实现小根堆
PriorityQueueInteger queue new PriorityQueue((o1, o2) - o1 - o2);// 实现大根堆
PriorityQueueInteger queue new PriorityQueue((o1, o2) - o2 - o1);queue.offer();queue.poll();queue.isEmpty();queue.peek();queue.size