所以,我有一种情况需要将三个值传递给一个串行的BlockingQueue队列:
(SelectableChannel, ComponentSocketBasis, Integer).
Run Code Online (Sandbox Code Playgroud)
它们实际上根本不需要进行哈希映射,并且使用HashMap是荒谬的,因为每个条目总是只有一个键; 如果他们只是在某种有序的集合中,那就好了.但是,由于缺少已知的替代方法,我在我的实现中使用了HashMap并生成了这个混淆的泛型组合:
private LinkedBlockingQueue<HashMap<HashMap<SelectableChannel, ComponentSocketBasis>, Integer>> deferredPollQueue = new LinkedBlockingQueue<HashMap<HashMap<SelectableChannel, ComponentSocketBasis>, Integer>>();
Run Code Online (Sandbox Code Playgroud)
这看起来真的很荒谬.我必须是一个可怕的n00b.当然有一种更好的方法可以做到这一点,不需要我在检索值时分解密钥或浪费(理论上 - 实际上,Java总是臃肿:)算法复杂性对无用的哈希计算我不需要因为我的密钥空间为1,甚至不想关联映射三个引用,而只是将它们分组?有了这个实现,我必须这样取出值:
while(deferredPollQueue.size() > 0) {
System.out.println("*** Draining new socket channel from queue");
HashMap<HashMap<SelectableChannel, ComponentSocketBasis>, Integer> p = deferredPollQueue.take();
SelectableChannel chan = null;
ComponentSocketBasis sock = null;
int ops = 0;
HashMap<SelectableChannel, ComponentSocketBasis> q = p.keySet().iterator().next();
chan = q.keySet().iterator().next();
sock = q.get(chan);
ops = p.get(q).intValue();
SelectionKey k = chan.register(selector, ops);
if(!channelSupervisorMap.containsKey(k))
channelSupervisorMap.put(k, sock);
}
Run Code Online (Sandbox Code Playgroud)
我很确定每一个有能力的人都认为这是一种荒谬的方式,所以问题是 - 什么是正确的方法?:)我无法在任何地方找到java.util.Pair或java.util.Triplet的证据.
我认为Orthodox Way(TM)只是为了容纳这个三元组而做一个自定义类或接口,但是对于这么大的系统中的这么小的任务来说,这似乎是荒谬的冗长和不必要的 - 尽管如此,那是Java本身.
出于同样的原因,也许这些值可以放在ArrayList或Vector或它们的衍生物上,但是在Java中,这并没有比我从这个HashMap中获得更简洁的解决方法,尽管它确实解决了也许是算法复杂性问题.
回到Perl …
我在c#中连接了一个sql数据库,现在尝试将内容放入数据集中.我怎么能这样做?
我的代码是:
string constr = "Data Source=ECEE;Initial Catalog=Internet_Bankaciligi;User ID=sa";
SqlConnection conn = new SqlConnection(constr);
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter("Select * from Internet_Bankaciligi", conn);
DataSet myDataSet = new DataSet();
DataRow myDataRow;
SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(mySqlDataAdapter);
mySqlDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
mySqlDataAdapter.Fill(myDataSet,"Internet_Bankaciligi");
myDataRow = myDataSet.Tables["IB_Account"].NewRow();
myDataRow["Account_ID"] = "NewID";
myDataRow["Branch_ID"] = "New Branch";
myDataRow["Amount"] = "New Amount";
myDataSet.Tables["Customers"].Rows.Add(myDataRow);
Run Code Online (Sandbox Code Playgroud)
这一行:"mySqlDataAdapter.Fill(myDataSet,"Internet_Bankaciligi");" 将错误标记为"无效的对象名称"Internet_Bankaciligi'.' 但Internet_Bankaciligi是我的数据库名称.
如果我使用:
SqlCommand selectCMD = new SqlCommand("select (*) from IB_Account", conn);
SqlDataAdapter myAdapter = new SqlDataAdapter();
myAdapter.SelectCommand = selectCMD;
myAdapter.Fill(myDataSet);
Run Code Online (Sandbox Code Playgroud)
然后:"SqlCommand selectCMD = new …
我试图让这段代码工作大约2个小时=(我是C#的新手,并不知道所有的.NET库类.
目标是将XML数据填充到comboBox
DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable("table1");
dataTable.Columns.Add("col1", typeof(string));
dataSet.Tables.Add(dataTable);
StringReader strR = new StringReader("<root><parm1>val1</parm1><parm2>val2</parm2></root>");
dataSet.ReadXml(strR);
comboBox1.DataSource = dataSet.Tables[0];
comboBox1.DisplayMember = "col1";
comboBox1.ValueMember = "col1";
Run Code Online (Sandbox Code Playgroud)
好吧,它没有按预期工作.ComboBox应显示val1 val2
我真的不明白DataSet中DataTable的列名如何与XML-Tags相关......也许这就是重点?
先感谢您!
我在这里找到了一个有趣的讨论
引用:
DataSet是用于编码数据层的业余解决方案......停止使用它们并学习代码!:)
您对DataSet的看法是什么?只是简化自定义类并与之合作?还有什么其他选择?
用于添加动态数据的代码
getdata()
{
SqlConnection con = new SqlConnection("Data source=XXXXX;Initial catalog=dummy;integrated security=true");
DataTable dt = new DataTable();
DataColumn col = new DataColumn("Title", typeof(System.String));
dt.Columns.Add(col);
DataRow row = dt.NewRow();
con.Open();
SqlCommand cmd = new SqlCommand("select Title,Description from systemtray", con);
SqlDataReader dr;
dr = cmd.ExecuteReader();
while (dr.Read())
{
string s=dr["Title"].ToString()+Environment.NewLine+dr["Description"].ToString();
row["Title"]= s.Trim();
dt.Rows.Add(row["Title"]);
}
dataGridView1.DataSource = dt;
}
Run Code Online (Sandbox Code Playgroud)
然后我使用properties为datagrid添加了两个按钮.输出是:两个按钮显示在索引[0],[1],数据显示在最后一列,我需要显示索引[0]位置的数据然后两个按钮.我可以手动设置索引.
我试图通过从数据集中提取数据来输出XML文件.但是,xml文件始终为空.你能帮我找一下代码中的错误吗?
class Program
{
static void Main(string[] args)
{
string umail = "";
XDocument loaded = XDocument.Load(@"C:\1.xml");
var q = from c in loaded.Descendants("AdminUserDB.dbo.U_User")
select (string)c.Element("URI");
foreach (string em in q)
umail = em;
SqlConnection cn = new SqlConnection("server=(local);database=AdminUserDB;Persist Security Info=True; uid=sa;pwd=P@swrd123");
cn.Open();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM dbo.U_User WHERE URI=@umail", cn);
da.SelectCommand.Parameters.AddWithValue("@umail", umail);
da.Fill(ds);
string filename = "output.xml";
System.IO.FileStream myFileStream = new System.IO.FileStream(filename, System.IO.FileMode.Create);
System.Xml.XmlTextWriter myXmlWriter = new System.Xml.XmlTextWriter(myFileStream, System.Text.Encoding.Unicode);
ds.WriteXml(myXmlWriter);
myXmlWriter.Close(); …Run Code Online (Sandbox Code Playgroud) 我试图通过这样的数组创建一个列表:
private Application[] GetApps()
{
DataSet ds = new Dataset();
string query = "query";
ds = GetData(query);
var appList = new Application[ds.Tables[0].Rows.Count];
for(var i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
DataRow item = ds.Tables[0].Rows[i];
appList[i].Name = item["Name"].ToString();
appList[i].Confidentiality = int.Parse(item["Conf"].ToString());
appList[i].Id = item["ID"].ToString();
}
return appList;
}
Run Code Online (Sandbox Code Playgroud)
我一直得到一个对象null错误,我知道我必须遗漏一些完全明显的东西,我只是没有看到.我是否需要以其他方式声明新数组?
我有一个带有动态列列的数据表,并希望聚合基于数字的列并将最终行保存到新的数据表中.
DataTable示例: -
PartnerName CreditCol DebitCol AmountCol ....
P1 10 20 30
P2 1 2 3
P3 3 1 10
P2 1 100 200
Run Code Online (Sandbox Code Playgroud)
所需的输出应为: -
PartnerName CreditCol DebitCol AmountCol ....
P1 10 20 30
P2 2 102 203
P3 3 1 10
Run Code Online (Sandbox Code Playgroud)
这里的主要内容是列集,并且是动态的.有时,可能有两列,有时可能是20列.请建议linq查询或任何其他解决方案.
我有一个SAS数据集:
+-------+-------+-------+-------+
| var_1 | var_2 | var_3 | index |
+-------+-------+-------+-------+
| 1 | 10 | 100 | 2 |
| 2 | 20 | 200 | 1 |
| 3 | 30 | 300 | 3 |
+-------+-------+-------+-------+
Run Code Online (Sandbox Code Playgroud)
现在,我想在同一个数据集中创建一个新变量,每个行的值来自var_1,var_2和var_3之一,使用索引变量中的相应条目.
也就是说,如果我的输出变量是var_out,那么数据集将如下所示:
+-------+-------+-------+-------+---------+
| var_1 | var_2 | var_3 | index | var_out |
+-------+-------+-------+-------+---------+
| 1 | 10 | 100 | 2 | 10 |
| 2 | 20 | 200 | 1 | 2 |
| 3 | …Run Code Online (Sandbox Code Playgroud) 我是一名数据分析初学者,目前正在学习如何在DataCamp中使用R。我希望整理一个可以在R Studio中找到的名为irsi的数据集。我想知道如何逐步清除此数据集,如下所示:
原版的:
head(iris)
Species Sepal.Length Sepal.Width Petal.Length Petal.Width
1 setosa 5.1 3.5 1.4 0.2
2 setosa 4.9 3.0 1.4 0.2
3 setosa 4.7 3.2 1.3 0.2
4 setosa 4.6 3.1 1.5 0.2
5 setosa 5.0 3.6 1.4 0.2
6 setosa 5.4 3.9 1.7 0.4
Run Code Online (Sandbox Code Playgroud)
步骤1:
> head(iris.wide)
Species Part Length Width
1 setosa Petal 1.4 0.2
2 setosa Petal 1.4 0.2
3 setosa Petal 1.3 0.2
4 setosa Petal 1.5 0.2
5 setosa Petal 1.4 0.2
6 setosa Petal …Run Code Online (Sandbox Code Playgroud)