Arrays类:
public static void main(String[] args) {
int[] arr={3,1,4,7,9,2,6};
System.out.println(Arrays.toString(arr));//[3, 1, 4, 7, 9, 2, 6]
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));//[1, 2, 3, 4, 6, 7, 9]
}
包装类:
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
int和String互转:
int转String
public static void main(String[] args) {
int i=10;
// String str=i+""; 方法1
// System.out.println(str);
String str=String.valueOf(i); 方法2
}
String转int:
public static void main(String[] args) {
String s="100";
// Integer i=Integer.valueOf(s); 方法1
// int x=i.intValue();
int x=Integer.parseInt(s); 方法2
System.out.println(x+1); //101
}
Calendar:
public static void main(String[] args) {
Calendar c=new GregorianCalendar();
//System.out.println(c);
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH)+1;
int day=c.get(Calendar.DATE);
System.out.println(year+"年"+month+"月"+day+"日");//2023年9月27日
}
Calendar的add和set方法:
add方法:
public static void main(String[] args) {
Calendar c=Calendar.getInstance();
c.add(Calendar.YEAR,10); //10年后
c.add(Calendar.MONTH,1); //一个月后
c.add(Calendar.DATE,-5); //5天前
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH)+1;
int day=c.get(Calendar.DATE);
System.out.println(year+"年"+month+"月"+day+"日"); //2033年10月22日
}
set方法:
public static void main(String[] args) {
Calendar c=Calendar.getInstance();
c.set(2050,1,1);
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH)+1;
int day=c.get(Calendar.DATE);
System.out.println(year+"年"+month+"月"+day+"日");//2050年2月1日
}
Collection:
Collection<String> c=new ArrayList<>();
c.add("Hello");
c.add("World!");
System.out.println(c);//[Hello, World!]
Collection集合遍历:
迭代器:
Collection<String> c=new ArrayList<>();
c.add("Hello");
c.add("World");
Iterator<String> i=c.iterator();
while(i.hasNext()){
String s=i.next();
System.out.println(s);
}
List集合:
特点:有序、可重复
有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置,可通过索引访问元素
与Set集合不同,列表允许重复元素
List的方法:
list.add ( 0, "..." ); 在指定位置添加
list.remove( 索引 );
list.get ( 索引 );
List的分类:
LinkedList:
底层数据结构是链表,查询慢,增删快
LinkedList特有功能:对首位的操作(addFirst\addList\getFirst\getLast\remove...)
ArrayList:
底层数据结构是数组,查询快,增删慢
Set集合:
不包含重复元素;没有带索引的方法;所以不能用普通for循环遍历;
Set<String> set=new HashSet<String>;
Set的分类:
HashSet:
底层是哈希表;对集合的迭代顺序不作保证;
没有带索引的方法,不能用普通for循环遍历;
由于是Set集合,不包含重复元素。
LinkedHashSet:
哈希表和链表实现的Set接口,具有可预测的迭代顺序;
由链表保证元素有序,存储取出顺序一致;
不包含重复元素。
TreeSet:
元素有序,这里的顺序不是指存储和取出的顺序,而是按一定规则进行排序,具体排序方法取决于构造方法。
TreeSet():
根据元素的自然排序进行排序
TreeSet(Comparator comparator):
根据指定的比较强进行排序
自然排序Comparable的使用:
存储对象并遍历,创建TreeSet集合使用无参构造方法
用TreeSet存储自定义对象,无参构造方法使用的是自然排序对元素进行排序的
自然排序,就是让元素所属的类实现Comparator接口,重写compareTo()方法
比较器Comparator的使用:
存储对象并遍历,创建TreeSet集合使用带参构造方法
带参构造方法使用的是比较器排序对元素进行排序的
比较器排序,就是让集合构造方法接受Comparator的实现类对象
TreeSet<Student> ts=new TreeSet<>(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.getAge()-o2.getAge();
}
});
Student s1=new Student("西施",29);
Student s2=new Student("王昭君",25);
Student s3=new Student("貂蝉",23);
Student s4=new Student("杨玉环",27);
ts.add(s1);
ts.add(s2);
ts.add(s3);
ts.add(s4);
ts.forEach(obj-> System.out.println(obj));
Map集合:
Interface Map<K,V> (K:键的类型 ;V:值的类型)
将键映射到值的对象,不能包含重复键,每个键可以映射到最多一个值
添加元素:map.put("...");
如果键相同,会覆盖值。
get(Object key):根据键获取值
Set<K> keySet():获取所有键的集合
Collection<V> values():获取所有值的集合
获取键值对对象的集合:
3种方法:
for(String key:hashMap.keySet()){
System.out.println(key+hashMap.get(key));
}
----------------------------------------------------------
for(Map.Entry<String,String> entry:hashMap.entrySet()){
System.out.println(entry.getKey()+entry.getValue());
}
----------------------------------------------------------
Iterator<String> iterator=hashMap.keySet().iterator();
while(iterator.hasNext()){
String key= iterator.next();
System.out.println(key+ hashMap.get(key));
}
Collections:
Collections.sort(list); 排序
Collections.reverse(list); 反转
Collections.shuffle(list); 随机
Collections比较器:
Collections.sort(arrList,new Comparator<Student>(){
public int compare(Student o1,Student o2){
int num=01.getAge()-o2.getAge();
int num2=0?o1.getName()compareTo(o2.getName():num);
}
});