java应用技术 2(2)

java应用技术
2(2)
一、类集
1.类集合就是一个动态的对象数组
2.Collection 
一般很少直接使用Collection ,一般直接使用它的子接口,这样功能明确。
public interface Collection<E>extends Iterable<E>使用了泛型


3.List
List接口扩充了collection,所以拥有更多的方法,使用更方便,可以重复。
实现子类ArrayList


List<String> list1 = new ArrayList<String>();


Collection<String> list2 = new ArrayList<String>();




4.List的常用方法介绍
1.//添加对象
list1.add("中国");
list1.add("四川");
System.out.println(list1);
list2.add("成都");
list2.add("双流");
System.out.println(list2);
//增加一组对象
list1.addAll(list2);
//list1.addAll(1,list2);//在指定位置添加
System.out.println(list1);
2.//移除对象
list1.remove(0);
//list1.remove("成都");
System.out.println(list1);
//输出对象
for(int i=0;i<list1.size();i++){
System.out.println(list1.get(i));
}
//将集合变成数组
Object[] a = list1.toArray();
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
3.//切取集合中的部分元素
List<String> list3 = list1.subList(0, 2);
System.out.println(list3);
//查找某个元素的位置
System.out.println(list1.indexOf("成都"));
//判断集合是否为空
System.out.println(list1.isEmpty());
二、LinkedList子类
案例
//Linkedlist集合
package cn.java.java3;


import java.util.LinkedList;


public class LinkedListDemo {


public static void main(String[] args) {
LinkedList<String> ld1 = new LinkedList<String>();
ld1.add("赵日天");
ld1.add("LO?E");
ld1.add("叶良辰");
System.out.println(ld1);
ld1.addFirst("SB的");
ld1.addLast("脑残");
System.out.println(ld1);
/*System.out.println(ld1.element());//输出集合的第一个数据
System.out.println(ld1.peek());输出集合的第一个数据
System.out.println(ld1.poll());输出集合的第一个数据,并删除
System.out.println(ld1);*/
/*LinkedList<Person> ld2 = new LinkedList<Person>();
ld2.add(new Person("我是叶良辰",1));
System.out.println(ld2);*/
int num = ld1.size();
for(int i = 0 ;i<num;i++){//这里不能用ld1.size()直接,因为集合的大小随着poll的删除而随之减少
System.out.println(ld1.poll());
}
}


}
class Person{
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name+","+age+"岁啦";
}


}
三、HashSet
1.采用散列存储,所有是无序的,重复的只会出现一次
2.案例:
package cn.java.java3;


import java.util.HashSet;
import java.util.Set;


import org.junit.Test;


public class HashSetDemo {
public static void main(String[] args) {
Set<String> s1 = new HashSet<String>();
s1.add("赵日天");
s1.add("龙傲天");
s1.add("LO?E");
s1.add("叶良辰");
s1.add("LO?E");
s1.add("龙傲天");
System.out.println(s1);
Set<Children> s2 = new HashSet<Children>();
s2.add(new Children("赵日天",2));
s2.add(new Children("赵日天",2));
s2.add(new Children("赵日天",2));
System.out.println(s2);
HashSetDemo hd1= new HashSetDemo();
hd1.asd();
new HashSetDemo().asd();

}
@Test
public void asd(){
Set<String> s1 = new HashSet<String>();
s1.add("赵日天");
s1.add("龙傲天");
s1.add("LO?E");
s1.add("叶良辰");
s1.add("LO?E");
s1.add("龙傲天");
System.out.println(s1);
}
}
class Children{
private String name;
private int age;
public Children(String name, int age) {
this.name = name;
this.age = age;
}

@Override
public String toString() {
return "姓名"+name+"年龄"+age+"岁";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Children other = (Children) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}

}
3.如果是我们自己定义的类就会出现重复,除非你重写equals和hashCode方法才会删除重复。
四、TreeSet(有序存放)
案例:
package cn.java.java3;


import java.util.Comparator;
import java.util.TreeSet;


public class TreeSetDemo {
public static void main(String[] args){
TreeSet<Student> t1 = new TreeSet<Student>(new SortClass());
t1.add(new Student("张",1));
t1.add(new Student("王",3));
t1.add(new Student("李",2));
System.out.println(t1);
}
}
//class Student implements Comparable<Student>{
class Student{
private String name;
private int age;

public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return  name + age;
}
/*@Override
public int compareTo(Student s) {
if(this.getAge()<s.getAge()){
return 1;
}else if(this.getAge()>s.getAge()){
return -1;
}else{
return 0;
}
}*/

}
class SortClass  implements Comparator<Student>{
@Override
public int compare(Student s1, Student s2) {
// TODO Auto-generated method stub
if(s1.getAge()>s2.getAge()){
return 1;
}else if(s1.getAge()<s2.getAge()){
return -1;
}else{
return 0;
}
}

}
六、比较器


案例:
package cn.java.java3;


import java.util.Comparator;
import java.util.TreeSet;


public class TreeSetDemo {
public static void main(String[] args){
TreeSet<Student> t1 = new TreeSet<Student>(new SortClass());
t1.add(new Student("张",1));
t1.add(new Student("王",3));
t1.add(new Student("李",2));
System.out.println(t1);
}
}
//class Student implements Comparable<Student>{
class Student{
private String name;
private int age;

public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return  name + age;
}
/*@Override
public int compareTo(Student s) {
if(this.getAge()<s.getAge()){
return 1;
}else if(this.getAge()>s.getAge()){
return -1;
}else{
return 0;
}
}*/

}
class SortClass  implements Comparator<Student>{
@Override
public int compare(Student s1, Student s2) {
// TODO Auto-generated method stub
if(s1.getAge()>s2.getAge()){
return 1;
}else if(s1.getAge()<s2.getAge()){
return -1;
}else{
return 0;
}
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值