我正在尝试使用java类BitSet作为自定义类的字段.我希望该类使用默认的BitSet并设置所有位.
import java.util.BitSet;
public class MyClass {
private BitSet mask;
public MyClass() {
this(new BitSet(4));
// want to set all bits first
// something like
// this( new BitSet(4).set(0,3) );
}
public MyClass(BitSet mask) {
this.mask = mask;
}
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,BitSet构造函数取消设置所有位.所以在我将它作为匿名对象发送之前,我想调用set(int, int)方法来设置所有位.我知道我可以简单地将字段初始化mask为new BitSet,然后set(int, int)从那里调用方法.
但是,一般来说我想知道在对象实例化时是否可以访问实例方法?
有没有办法在Java中将数据结构初始化为常量值?我搜索了高低,找不到任何这样的技术.我特别想要初始化一个包含混合数据类型的类,例如String和int.
class xyz {
String a;
int b;
}
static final xyz example1 = { "string value", 42 }; // This doesn't work.
static final xyz[] example2 = { { "value a", 42 }, { "value b", 43 } }; // this also doesn't work
Run Code Online (Sandbox Code Playgroud)
我可以初始化String的数组,甚至是String的二维数组,但由于某种原因,我无法初始化记录结构或记录结构数组.我在Delphi中经常这样做,发现没有这个功能很难生存.
好吧,我已经编程了大约40年,所以我不是一个新手.我需要知道这样的事情是否可行.我确实希望嵌入在我的应用程序中的常量数据,而不是从文件中读入,并使用赋值语句来设置数据类型,从而无法将它们声明为常量(最终).
感谢您的任何建议或意见.我真的想找到一个很好的解决方案,因为我有很多Pascal代码转换为Java,我不想重新设计所有的数据结构.
我是Java的基础,因为我是全职的C#开发人员,但我需要在Android中制作一些私人项目.
在C#中我可以这样做:
public class Test
{
public string A {get;set;}
public OtherClass B {get;set;}
}
public OtherClass ()
{
string Some {get;set;}
string Again {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我想使用类测试时,我可以执行以下代码:
var test = new Test
{
A = "test",
B = new OtherClass
{
Some = "Some",
Again = "Again"
}
};
Run Code Online (Sandbox Code Playgroud)
感谢现在我已经以明确的方式初始化了测试.
当我想在Java中执行此操作时,我必须使代码如下:
public class Test
{
private string A;
public string GetA()
{
return A;
}
public void SetA(string a)
{
A = a;
}
privte OtherClass B;
public OtherClass GetB() …Run Code Online (Sandbox Code Playgroud) 是否可以声明并初始化Hashtableor Map,这样我们就不必在两个不同的步骤中声明和初始化?
// declare first
Hashtable<String, Integer> numbers = new Hashtable<String, Integer>(3);
// then initialize
numbers.put("one", 1);
numbers.put("two", 2);
numbers.put("three", 3);
Run Code Online (Sandbox Code Playgroud)
例如,在 ruby 和 javascript 中,有文字来定义它们:
numbers = {
one: 1,
two: 2,
three: 3,
}
Run Code Online (Sandbox Code Playgroud) 我想要实现的目标可能毫无意义,但我想找到答案来满足我的好奇心。
我正在尝试创建一个有效的语句,该语句将基于另一个列表创建一个新列表,并在末尾添加一个新值。
我是 lambda 表达式的新手,我不确定应该使用哪种列表。
该方法看起来像这样:
private List<Integer> conjoin(List<Integer> list, Integer newValue){
return new ArrayList<Integer>(list).stream()
.map(value -> list.indexOf(value)==(list.size()-1) ?
Arrays.asList(value, newValue) :
Arrays.asList(value))
.flatMap(Collection::stream)
.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
但更加整洁和高效。
或者是否有一个内置方法可以执行我不知道的相同操作?
我有一个非常简单的问题但到目前为止找不到任何东西.
我正在尝试创建两个类构造函数.
第一个构造函数获取2个字符串和一个HashMap并初始化类变量.
public Foo(String a, String b, HashMap<String, String> c) {
this.a = a;
this.b = b;
this.c = c;
}
Run Code Online (Sandbox Code Playgroud)
第二个构造函数应该只获取2个字符串并创建一个"默认"-HashMap.
通常你只需要this()使用默认值调用,但我找不到用a做的方法HashMap.
public Foo(String a, String b) {
this(a, b, new HashMap<String, String>().put("x", "y").put("f","g"));
}
Run Code Online (Sandbox Code Playgroud)
Eclipse标记错误:
类型不匹配:无法转换
String为HashMap<String,String>
否则this()-call不能是函数中的第一个语句.
public Foo(String a, String b) {
HashMap<String, String> c = new HashMap<String, String>();
c.put("x", "y");
c.put("f", "g");
this(a, b, c);
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?
最糟糕的情况我不得不复制代码,但我想知道是否没有更好的方法.
我只想以“可读性强”的格式输出数字。例如,您可以将 100000 输出为 100.000,这将更具可读性。
是否有可以用于此的现有方法?
我有HashMap像:
static HashMap<String,ArrayList<Media>> mediaListWithCategory=new HashMap<String,ArrayList<Media>>();
Run Code Online (Sandbox Code Playgroud)
我有价值:
January:
-Sunday
-Monday
Februsry:
-Saturday
-Sunday
-Thursday
March:
-Monday
-Tuesday
-Wednesday
Run Code Online (Sandbox Code Playgroud)
在定义哈希映射时如何静态分配这些值?
我想问 - 有什么区别
Set<CurrencyType> set1 = new HashSet<>() {{
add("a");
add("b");
add("c");
}}
Run Code Online (Sandbox Code Playgroud)
和
Set<CurrencyType> set2 = Set.of(
"a",
"b",
"c"
)
Run Code Online (Sandbox Code Playgroud)
在名为 @Test 的调试模式下MySillyTest(这个名称很快就会回来),我可以看到它set1是 的一个实例MySillyTest$1,但我认为它只是一个HashSet. set2另一方面是 的一个实例ImmutableCollections$SetN。这两者之间真正的区别是什么?java.util.Set使用什么实现Set.of()?这两者之间有性能/内存使用/CPU 使用差异吗?
我有一个类User,只有两个字段:id,name
package test;
public class User {
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在Main课堂上,我尝试用两种不同的方法初始化User对象:
package test;
/**
* @author lhuang
*/
public class Main {
public static void main(String[] args) {
User u = new User() {
{
setId(1l);
setName("LHuang");
}
};
System.out.println(u.getClass()); …Run Code Online (Sandbox Code Playgroud) java ×10
android ×1
c# ×1
class ×1
code-cleanup ×1
collections ×1
dictionary ×1
hashmap ×1
hashset ×1
lambda ×1
numbers ×1
overloading ×1
set ×1
this ×1