android/util中的一些常用类

1.SparseArrays 

sparseArrays是映射Integer To Objects,可参照HashMap的作用.它的目的是更省内存,内存效率更高,因为它避免了keys的自动装箱,而且它的结构也不用依赖每一个entry-set。它内部是用二分查找去查询,所以不适合key很多的情况,大概在几百个元素的情况下,比hashmap的速度慢50%以下。

类似的有SparseBooleanArray,SparseIntArray,SparseLongArray,分别是映射Integer To Boolean,Int Long.

2.ArraySet ArrayMap

与上相同,数目不大情况下代替hashmap

3.AtomicFile

就是在写文件的同时本地保存了一份copy,如果写失败可以从备份文件恢复。

4.AttributeSet(interface),XmlPullAttributes(class),BridgeXmlPullAttributes(class)

AttributeSet只是一个解析xml的接口,子类Resources.Theme.obtainStyledAttributes();

也可以

XmlPullParser parser = resources.getXml(myResouce);
 AttributeSet attributes = Xml.asAttributeSet(parser);

5.Base64,Base64InputStream,Base64OutputStream

3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式.适用于网络传输,加密解密.

6.ContainerHelpers 

ArrayMap等中使用的二分查找就是这货的ContainerHelpers.binarySearch,没有其他作用了

7.DisplayMetrics

用于获取屏幕像素密度,low=120,mid=160,high=240...

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

8.FastImmutableArraySet

重复利用iterator,如果要遍历数百次,效率是hashset的2.5倍。

9.FoatMath

基本不用了(效率低),类似Math的一些操作。

10.JsonReader,JsonWriter

json解析,用法

  public List<Message> readJsonStream(InputStream in) throws IOException {
      JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
     try {
        return readMessagesArray(reader);
      } finally {
        reader.close();
      }
    }

    public List<Message> readMessagesArray(JsonReader reader) throws IOException {
      List<Message> messages = new ArrayList<Message>();

     reader.beginArray();
      while (reader.hasNext()) {
        messages.add(readMessage(reader));
      }
      reader.endArray();
      return messages;
    }

    public Message readMessage(JsonReader reader) throws IOException {
      long id = -1;
     String text = null;
      User user = null;
      List<Double> geo = null;

      reader.beginObject();
      while (reader.hasNext()) {
        String name = reader.nextName();
        if (name.equals("id")) {
          id = reader.nextLong();
        } else if (name.equals("text")) {
          text = reader.nextString();
        } else if (name.equals("geo") && reader.peek() != JsonToken.NULL) {
          geo = readDoublesArray(reader);
        } else if (name.equals("user")) {
          user = readUser(reader);
        } else {
          reader.skipValue();
        }
      }
      reader.endObject();
      return new Message(id, text, user, geo);
    }

    public List<Double> readDoublesArray(JsonReader reader) throws IOException {
      List<Double> doubles = new ArrayList<Double>();

      reader.beginArray();
      while (reader.hasNext()) {
        doubles.add(reader.nextDouble());
      }
      reader.endArray();
      return doubles;
    }

    public User readUser(JsonReader reader) throws IOException {
      String username = null;
      int followersCount = -1;

      reader.beginObject();
      while (reader.hasNext()) {
        String name = reader.nextName();
        if (name.equals("name")) {
          username = reader.nextString();
        } else if (name.equals("followers_count")) {
          followersCount = reader.nextInt();
        } else {
          reader.skipValue();
        }
      }
      reader.endObject();
      return new User(username, followersCount);
    }

*   public void writeJsonStream(OutputStream out, List<Message> messages) throws IOException {
 *     JsonWriter writer = new JsonWriter(new OutputStreamWriter(out, "UTF-8"));
 *     writer.setIndent("  ");
 *     writeMessagesArray(writer, messages);
 *     writer.close();
 *   }
 *
 *   public void writeMessagesArray(JsonWriter writer, List<Message> messages) throws IOException {
 *     writer.beginArray();
 *     for (Message message : messages) {
 *       writeMessage(writer, message);
 *     }
 *     writer.endArray();
 *   }
 *
 *   public void writeMessage(JsonWriter writer, Message message) throws IOException {
 *     writer.beginObject();
 *     writer.name("id").value(message.getId());
 *     writer.name("text").value(message.getText());
 *     if (message.getGeo() != null) {
 *       writer.name("geo");
 *       writeDoublesArray(writer, message.getGeo());
 *     } else {
 *       writer.name("geo").nullValue();
 *     }
 *     writer.name("user");
 *     writeUser(writer, message.getUser());
 *     writer.endObject();
 *   }
 *
 *   public void writeUser(JsonWriter writer, User user) throws IOException {
 *     writer.beginObject();
 *     writer.name("name").value(user.getName());
 *     writer.name("followers_count").value(user.getFollowersCount());
 *     writer.endObject();
 *   }
 *
 *   public void writeDoublesArray(JsonWriter writer, List<Double> doubles) throws IOException {
 *     writer.beginArray();
 *     for (Double value : doubles) {
 *       writer.value(value);
 *     }
 *     writer.endArray();
 *   }

11.LruCache

用的是LinkedHashMap<K,V>,使用强引用,最近使用的元素移到队列的最前,所以不经常使用的元素被移出。由于弱引用回收时间不确定,LruCache更好的作为图片缓存.

 *   int cacheSize = 4 * 1024 * 1024; // 4MiB
 *   LruCache<String, Bitmap> bitmapCache = new LruCache<String, Bitmap>(cacheSize) {
 *       protected int sizeOf(String key, Bitmap value) {
 *           return value.getByteCount();
 *       }
 *   }}

12.Patterns

写了常用的Ip,domain,email等的正则表达式

13.TimeUtils

获取时区

14.xml

xml解析

时间: 2024-10-11 00:35:29

android/util中的一些常用类的相关文章

android开发中关于继承activity类中方法的调用

android开发中关于继承activity类中的函数,不能在其他类中调用其方法. MainActivity.java package com.example.testmain; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState)

Java 中必的常用类(很实用)

Java中必须了解的常用类 一.包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等.基本数据类型是不具备对象的特性的,比如基本类型不能调用方法.功能简单...,为了让基本数据类型也具备对象的特性, Java 为每个基本数据类型都提供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型. 基本类型和包装类之间的对应关系: 注意:有两个包装类的名称比较特殊一个是Integer,另一个是Character,其他都是基本数据类首

Android Studio中如何自定义文件类头?

在android studio开发工具的使用中,如果我们能掌握一些小技巧,那我们的开发工作往往能事半功倍,今天给大家介绍一个很简单的"小"技巧. 平时, 我们在Android Studio中开发Android时, 总免不了要创建新的文件, 也许是Java文件, 也许是C和C++文件. 不过, Android Studio每次给我们生成的Java类都会包含一个头部的注释, 例如: /**  * Created by enmingx on 14/09/16.  */ 这样虽然还不错, 但是

MyEclipse中如何查看常用类的源代码?

MyEclipse是一款功能强大的java开发软件,里面提供了很多友好的快捷的使用方法.对于java初学者而言,一般都会遇到查询常用类的源代码,或是从中学习编程技巧:或是从中学习类的使用方法,或是琢磨一些细节问题.那么,该如何查看源代码呢? 首先,打开MyEclipse软件,建一个类,在代码编辑窗口中,写出想要打开的常用类的类名,以“String”类为例进行说明.下面讲解如何打开源代码的三种方法. 方法一:在MyEclipse代码编辑窗口中,把光标放在类名的前面.中间或者后边都可以,具体位置可以

Java中正则表达式及其常用类Math、Calendar、Date、BigDecimal、BigInterger、System、Rondom的使用

1:正则表达式(理解) (1)就是符合一定规则的字符串 (2)常见规则 A:字符 x 字符 x.举例:'a'表示字符a \\ 反斜线字符. \n 新行(换行)符 ('\u000A') \r 回车符 ('\u000D') B:字符类 [abc] a.b 或 c(简单类) [^abc] 任何字符,除了 a.b 或 c(否定) [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围) [0-9] 0到9的字符都包括 C:预定义字符类 . 任何字符.我的就是.字符本身,怎么表示呢? \. \

hadoop中mapreduce的常用类(一)

云智慧(北京)科技有限公司陈鑫 写这个文章的时候才意识到新旧API是同时存在于1.1.2的hadoop中的.以前还一直纳闷儿为什么有时候是jobClient提交任务,有时是Job...不管API是否更新,下面这些类也还是存在于API中的,经过自己跟踪源码,发现原理还是这些.只不过进行了重新组织,进行了一些封装,使得扩展性更好.所以还是把这些东西从记事本贴进来吧. 关于这些类的介绍以及使用,有的是在自己debug中看到的,多数为纯翻译API的注释,但是翻译的过程受益良多. GenericOptio

hadoop中mapreduce的常用类(二)

云智慧(北京)科技有限公司陈鑫 NullWritable  不想输出的时候,把它当做key.NullWritable是Writable的一个特殊类,序列化的长度为0,实现方法为空实现,不从数据流中读数据,也不写入数据,只充当占位符,如在MapReduce中,如果你不需要使用键或值,你就可以将键或值声明为NullWritable,NullWritable是一个不可变的单实例类型. FileInputFormat继承于InputFormat InputFormat的作用: 验证输入规范:切分输入文件

Android 代码中使用Color工具类 parseColor

方式一: arg1.setBackgroundColor(Color.parseColor("#87CEFA")); 方式二: arg1.setBackgroundColor(getResources().getColor(R.color.crowd));

大话Android项目中的常用技巧

Chapter1 准备工作 一.优化你的工作区间(磨刀不误砍柴功) 题外话:可能有很多人会认为,现在Google官方已经放弃了eclipse的支持了而改用Android Studio了,那么本节好像就没有意义了.其实不然,从哲学的角度来说:凡事都是有普遍规律性的!可能在AS上操作是不同的,但是我们要有这样的一个大体思路,那么通过Google我们照样可以找到对应的操作并且完成自己工作空间的定制,更何况我们是有着两年工作经验的Android开发人员呢!!!所以掌握ecipse刻不容缓啊! 1.定制自