SharePreference 工具类封装

import java.util.List;
import java.util.Map;
import java.util.Set;
import com.alibaba.fastjson.JSON;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Build;
import android.text.TextUtils;

/**
* @ClassName: SharePreferenceUtils
* @Description: SharePreference工具类
* @Author:lxs
*
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@SuppressWarnings("unchecked")
public class SharePreferenceTools {

private SharedPreferences sharedPreferences;
private Editor editor;
private final int ZERO = 0;

public SharePreferenceTools(Context context) {
this(context, ConfigUtils.PREFERENCE_DEFAULT_NAME, Context.MODE_PRIVATE);
}

public SharePreferenceTools(Context context, String preferenceName) {
this(context, preferenceName, Context.MODE_PRIVATE);
}

@SuppressLint("CommitPrefEdits")
public SharePreferenceTools(Context context, String preferenceName, int mode) {
sharedPreferences = context.getSharedPreferences(preferenceName, mode);
editor = sharedPreferences.edit();
}

public void putString(String key, String value) {
if (!TextUtils.isEmpty(key) && !TextUtils.isEmpty(value)) {
editor.putString(key, value);
editor.commit();
}
}

public String getString(String key) {
String value = null;
if (!TextUtils.isEmpty(key)) {
value = sharedPreferences.getString(key, null);
}
return value;
}

public String getString(String key, String defaultValue) {
String value = null;
if (!TextUtils.isEmpty(key)) {
value = sharedPreferences.getString(key, defaultValue);
}
return value;
}

public void putInt(String key, int value) {
if (!TextUtils.isEmpty(key)) {
editor.putInt(key, value);
editor.commit();
}
}

public int getInt(String key) {
int value = ZERO;
if (!TextUtils.isEmpty(key)) {
value = sharedPreferences.getInt(key, ZERO);
}
return value;
}

public int getInt(String key, int defaultValue) {
int value = defaultValue;
if (!TextUtils.isEmpty(key)) {
value = sharedPreferences.getInt(key, defaultValue);
}
return value;
}

public void putBoolean(String key, boolean value) {
if (!TextUtils.isEmpty(key)) {
editor.putBoolean(key, value);
editor.commit();
}
}

public boolean getBoolean(String key) {
boolean result = false;
if (!TextUtils.isEmpty(key)) {
result = sharedPreferences.getBoolean(key, false);
}
return result;
}

public boolean getBoolean(String key, boolean defaultValue) {
boolean result = defaultValue;
if (!TextUtils.isEmpty(key)) {
result = sharedPreferences.getBoolean(key, defaultValue);
}
return result;
}

public void putLong(String key, long value) {
if (!TextUtils.isEmpty(key)) {
editor.putLong(key, value);
editor.commit();
}
}

public long getLong(String key) {
long value = ZERO;
if (!TextUtils.isEmpty(key)) {
value = sharedPreferences.getLong(key, ZERO);
}
return value;
}

public long getLong(String key, long defaultValue) {
long value = defaultValue;
if (!TextUtils.isEmpty(key)) {
value = sharedPreferences.getLong(key, defaultValue);
}
return value;
}

public void putFloat(String key, float value) {
if (!TextUtils.isEmpty(key)) {
editor.putFloat(key, value);
editor.commit();
}
}

public float getFloat(String key) {
float value = ZERO;
if (!TextUtils.isEmpty(key)) {
value = sharedPreferences.getFloat(key, ZERO);
}
return value;
}

public float getFloat(String key, float defaultValue) {
float value = defaultValue;
if (!TextUtils.isEmpty(key)) {
value = sharedPreferences.getFloat(key, defaultValue);
}
return value;
}

public void putStringSet(String key, Set<String> value) {
if (!TextUtils.isEmpty(key)) {
editor.putStringSet(key, value);
editor.commit();
}
}

public Set<String> getStringSet(String key) {
Set<String> set = null;
if (!TextUtils.isEmpty(key)) {
set = sharedPreferences.getStringSet(key, null);
}
return set;
}

public Set<String> getStringSet(String key, Set<String> defaultValue) {
Set<String> set = defaultValue;
if (!TextUtils.isEmpty(key)) {
set = sharedPreferences.getStringSet(key, defaultValue);
}
return set;
}

/**
* 添加对象
*
* @param key
* @param t
*/
public <T> void putModel(String key, T t) {
if (!TextUtils.isEmpty(key) && t != null) {
putString(key, JSON.toJSONString(t));// fastjson
}
}

/**
* 获取对象
*
* @param key
* @param t
* @return
*/
public <T> T getModel(String key, Class<T> clazz) {
String value = null;
if (!TextUtils.isEmpty(key)) {
value = getString(key);
}
return TextUtils.isEmpty(value) ? null : JSON.parseObject(value, clazz);// fastjson
}

/**
* 添加集合
*
* @param key
* @param t
*/
public <T> void putModels(String key, List<T> t) {
if (!TextUtils.isEmpty(key) && t != null && t.size() > ZERO) {
putString(key, JSON.toJSONString(t));// fastjson
}
}

/**
* 获取集合
*
* @param key
* @param t
* @return
*/
public <T> List<T> getModels(String key, Class<T> clazz) {
String value = null;
if (!TextUtils.isEmpty(key)) {
value = getString(key);
}
return TextUtils.isEmpty(value) ? null : JSON.parseArray(value, clazz);// fastjson
}

/**
* 查询某个key是否已经存在
*
* @param key
* @return
*/
public boolean contains(String key) {
return sharedPreferences.contains(key);
}

/**
* 移除某个key值已经对应的值
*
* @param key
*/
public void remove(String key) {
editor.remove(key);
editor.commit();
}

/**
* 清除所有数据
*/
public void clear() {
editor.clear();
editor.commit();
}

/**
* 返回所有的键值对
*
* @return
*/
public Map<String, ?> getAll() {
return sharedPreferences.getAll();
}

/**
* 日志输出所有键值对
*/
public void selectKeyAll() {
Map<String, Object> map = (Map<String, Object>) sharedPreferences.getAll();
for (String key : map.keySet()) {
Print.d("key= " + key + " and value= " + map.get(key));
}
}
}

T extends JavaBean 指定传入类型

在android studio下可以使用@NonNull 来限制传入KEY和VALUE传入不为null

转载于:https://www.cnblogs.com/QQ80565970/p/5856074.html

分数阶傅里叶变换(Fractional Fourier Transform, FRFT)是对传统傅里叶变换的拓展,它通过非整数阶的变换方式,能够更有效地处理非线性信号以及涉及时频局部化的问题。在信号处理领域,FRFT尤其适用于分析非平稳信号,例如在雷达、声纳和通信系统中,对线性调频(Linear Frequency Modulation, LFM)信号的分析具有显著优势。LFM信号是一种频率随时间线性变化的信号,因其具有宽频带和良好的时频分辨率,被广泛应用于雷达和通信系统。FRFT能够更精准地捕捉LFM信号的时间和频率信息,相比普通傅里叶变换,其性能更为出色。 MATLAB是一种强大的数值计算和科学计算工具,拥有丰富的函数库和用户友好的界面。在MATLAB中实现FRFT,通常需要编写自定义函数或利用信号处理工具箱中的相关函数。例如,一个名为“frft”的文件可能是用于执行分数阶傅里叶变换的MATLAB脚本或函数,并展示其在信号处理中的应用。FRFT的正确性验证通常通过对比变换前后信号的特性来完成,比如评估信号的重构质量、信噪比等。具体而言,可以通过计算原始信号与经过FRFT处理后的信号之间的相似度,或者对比LFM信号的关键参数(如初始频率、扫频率和持续时间)是否在变换后得到准确恢复。 在MATLAB代码实现中,通常包含以下步骤:首先,生成LFM信号模型,设定其初始频率、扫频率、持续时间和采样率等参数;其次,利用自定义的frft函数对LFM信号进行分数阶傅里叶变换;接着,使用MATLAB的可视化工具(如plot或imagesc)展示原始信号的时域和频域表示,以及FRFT后的结果,以便直观对比;最后,通过计算均方误差、峰值信噪比等指标来评估FRFT的性能。深入理解FRFT的数学原理并结合MATLAB编程技巧,可以实现对LFM信号的有效分析和处理。这个代码示例不仅展示了理论知识在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值