数组和集合的常用方法

数组

一、初始化

int[] arr = new int[3];//{0,0,0}
int[] arr = {1,2,3};
int[] arr = new int[]{1,2,3};
int[] arr;
//arr = {1,2,3};error,此方法只有在声明的同时初始化
//arr = new int[]{1,2,3};正确
arr = new int[3];

二、添加数据(基本不用)

三、删除数据(基本不用)

四、修改数据

int[] arr = {1,2,3};
arr[1] = 8888;//可以根据下标修改数据

五、查询数据

System.out.println(arr[2]);
for (int i : arr) {
   System.out.println(i);
}
for(int i=0;i<arr.length;i++){
   System.out.println(arr[i]);
}
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));

六、 List转换为Array

Integer[] arr = list.toArray(new Integer[list.size()]);
for (Integer integer : c) {
  System.out.println(integer);
}

Collection

  1. 初始化

    Collection c = new ArrayList();
  2. 添加数据

  3. 删除数据(基本不用)

  4. 修改数据(基本不用)

  5. 查询数据

    c.add(1);
    c.add(11);
    c.add(11);
    c.add(1111);

    // remove方法也是根据元素equals比较的结果进行删除的。一个一个删除
    c.remove(11);
    if(!c.isEmpty()){
       c.clear();
    }

    System.out.println(c.toString());
    for (Object o : c) {
       System.out.println(o);
    }
    Iterator it = c.iterator();
    while(it.hasNext()){
       Integer i = (Integer) it.next();
       System.out.println(i);
       if(i == 11){
           it.remove();
      }
    }

     

  6. 集合转换为数组

    Collection<Integer> c = new ArrayList<Integer>();
    c.add(1);
    c.add(11);
    c.add(1111);
    Integer[] arr = c.toArray(new Integer[c.size()]);
    System.out.println(Arrays.toString(arr));

     

List

一、初始化

List<Integer> c = new ArrayList<Integer>();

二、添加数据

三、删除数据(基本不用)

四、修改数据(基本不用)

c.add(1);
c.add(11);
c.add(1111);
if(!c.isEmpty()){
   c.clear();
}
c.add(0,44);
Integer i = c.remove(1);
System.out.println(i);
Integer i = c.set(0,55);
System.out.println(i);

五、查询数据(可以通过下标获取数据,修改数据,基本不用)

for(int i=0;i<list.size();i++){
   str = list.get(i);
   System.out.println(str);
}

for (Integer integer : c) {
   System.out.println(integer);
}
Iterator it  = c.iterator();
while(it.hasNext()){
   Integer i = (Integer) it.next();
   if(i == 11){
       it.remove();
  }
}
System.out.println(c.toString());

六、 Array转换为List

Integer[] arr = c.toArray(new Integer[c.size()]);
List<Integer> list = Arrays.asList(arr);
/*对集合元素操作就是对原数组对应元素的操作,不可以直接添加元素,这会导致原数组扩容,而
* 如果扩容就不能表示原数组,所以这样的操作不受支持。
*/
list.set(1,33);
//list.add(22);

List<Integer> list2 = new ArrayList<Integer>(list) ;
list2.add(22);
System.out.println(list.toString());
System.out.println(list2.toString());

七、子集

List<Integer> list = c.subList(0,2);
for (int i=0;i<list.size();i++) {
  list.set(i,list.get(i)*10);
}

八、排序

  1. 通过Collections工具类排序

    Collections.sort(list);
  2. 集合中的元素实现comparable接口,自定义大小

    public class Point implements Comparable<Point>{
    private int x;
    private int y;

      public Point(int x, int y) {
          super();
          this.x = x;
          this.y = y;
      }
      /**
        * 实现Comparable接口后必须重写方法compareTo该方法的作用是定义当前对象this与参数对象o之间
        * 比较大小的规则。
        * 返回值不关注具体取值,只关注取值范围:
        * 当返回值>0:当前对象this大于参数对象o(this>o)
        * 当返回值<0:this<o
        * 当返回值=0:this==o
        */
      public int compareTo(Point o) {
          int len = this.x*this.x+this.y*this.y; //自定义的
          int olen = o.x*o.x+o.y*o.y;
          return len-olen;
      }
    }

    再通过Collections.sort(list)排序。

  3. Collections.sort(list,Comparator)方法中写一个比较方法

     /* 使用该方法时,sort不要求集合元素必须实现
       * Comparable接口了(因为不用元素自身的比较规则)
       */
    Collections.sort(list,new Comparator<String>(){
       public int compare(String o1, String o2) {
           return o1.length()-o2.length();
      }
    });

    与File中的一个过滤方法作比较

    File dir = new File(".");
    /*
    * 获取当前目录中的所有文件
    */
    File[] subs = dir.listFiles(new FileFilter(){
      public boolean accept(File file) {
          String name = file.getName();
          System.out.println("正在过滤:"+name);
          return file.isFile();
      }
    });

    for(File sub : subs){
      System.out.println(sub.getName());
    }

Set(略)

 

Map

一、初始化

Map<String,Integer> map = new HsahMap<String,Integer>();

二、添加数据

三、删除数据(基本不用)

四、修改数据(基本不用)

map.put("语文", 99);
map.put("数学", 98);
map.put("英语", 99);

Integer i = map.remove("语文");

Integer d = map.put("语文", 100);

五、查询数据

Integer d = map.get("语文");

Set<String> key = map.keySet();
for (String s : key) {
   System.out.println(s);
}

Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
for (Map.Entry<String, Integer> entry : entrySet) {
   String k = entry.getKey();
   Integer v = entry.getValue();
   System.out.println(k+":"+v);
}

Collection<Integer> vaules = (List<Integer>) map.values();
System.out.println(vaules.toString());

 

上一篇:Java ASM系列:(025)修改已有的方法(添加-进入和退出-打印方法参数和返回值)


下一篇:Qt小案例《加法计算器》